2013-07-05 53 views
0

之間的所有HTML代碼(數據),我想抓住所有的HTML之間:Preg_match_all - 搶<table></table>

<table cellpadding="0" cellspacing="0" border="0" class="list" width="100%"> 
. 
. 
. 
. 
</tbody> 

preg_match_all('XXXXXXXXXX', $this->markup, $links); 
+1

不要使用regexp來解析HTML,請使用DOM解析庫。 – Barmar

回答

5

一般來說,我建議使用DomDocument而不是正則表達式。但是DomDocument在這種情況下需要一些額外的麻煩,因爲OP需要HTML代碼,而不僅僅是nodeValue(s)。 (反正,對於基於的DomDocument的方法,你可以使用一些「變通」之類this(獲取表格內容含HTML)。)

話雖這麼說,這裏有你要的正則表達式:

$html = '<table cellpadding="0" cellspacing="0" border="0" class="list" width="100%">' . 
     '<tr><td>Lorem</td><td>Ipsum</td></tr>' . 
     '</table>'; 

preg_match_all('/<table.*?>(.*?)<\/table>/si', $html, $matches); 

var_dump($matches[1][0]); // string(37) "<tr><td>Lorem</td><td>Ipsum</td></tr>" 
0

你應該使用類似DomDocument而不是用正則表達式解析這一點。

0

使用phpQuery進行此操作。 PhpQuery具有類似jQuery的語法,並且它僅僅用於理解