Preg_match_all - 获取<table> </table>之间的所有html代码(数据)

时间:2013-07-05 10:53:36

标签: php web-scraping html-table

我想抓住所有html:

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

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

3 个答案:

答案 0 :(得分:6)

一般来说,我建议使用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>"

答案 1 :(得分:0)

您应该使用DomDocument之类的内容,而不是使用正则表达式解析它。

答案 2 :(得分:0)

使用phpQuery进行此操作。 PhpQuery有像jQuery这样的语法,它只是为了理解