2012-02-09 86 views
0

我試圖從HTML提取表,這裏是表開始的HTML代碼。使用的preg_match提取表

<table class='price' id='comp' style='clear:both;display:none'> 

但是,當我使用這個PHP代碼,沒有找到匹配

preg_match("/<table class='price' id='comp' style='clear:both;display:none'>.*?<\/[\s]*table>/s", $buffer, $matches); 
print_r($matches); 

由於表是在HTML,我想這個問題是用的preg_match聲明。

+3

不要用HTML混合正則表達式。改用一些XML解析器。 – hsz 2012-02-09 15:18:09

+0

@hsz爲什麼不呢?當他只需要整個網站的一個價值?解析(也許)無效的HTML可能會使用更多的資源 – Vyktor 2012-02-09 15:33:31

+0

嘗試加入'im'修飾你的正則表達式的結束(因此最終會是什麼樣子:'表>/IM「',讓我知道它的工作 – Vyktor 2012-02-09 15:34:29

回答

-1

猜你需要這樣的:

<table class='price' id='comp' style='clear\:both;display\:none'>[\s\S]*?</table>

+1

AFAIK':'不需要在PCRE逃逸 – Vyktor 2012-02-09 15:31:13

+0

不,不工作。很奇怪嗎? – user1197941 2012-02-09 17:14:08

+0

這是行不通的。 – Crontab 2012-02-09 18:56:52

0

使用PHP Simple HTML DOM Parser代替。不要推出自己的正則表達式來從網頁中提取數據。如果你在使用自己的正則表達式來做到這一點絕對死心塌地,嘗試My Regex Tester(不是我的 - 這恰好是它的名字)方便地調試模式。另外,請參考this Stack Overflow post,說明你爲什麼不應該做你想做的事情。

+0

因爲我使用一個共享的主機,我不能使用DOM解析器。我對這個表達式應該是簡單的反正。 – user1197941 2012-02-09 17:32:18

+0

@ user1197941爲什麼會共同主辦阻止你使用我連接的類?它是一個PHP文件,它的唯一要求是具有PHP 5。 – Crontab 2012-02-09 18:24:18