1

可能重复:
正则表达式匹配打开的标签,XHTML 自包含标签除外
如何使用 PHP 解析和处理 HTML?

我需要帮助。我有 HTML,我需要给我表格的正则表达式。只有一张桌子。因为这张桌子之后是另一张桌子。示例 html:

<table class="results" cellspacing="1" cellpadding="0" border="0" width="100%" align="left">
    <tr><td>text</td></tr>
</table>
<!-style>
tr.bg_selected{}
tr.bg_selected td, tr.bg_checked td { background-color:#ffe9bc !important;}
</style>**AND ANOTHER TABLE**

这是我的常客。我得到了这张桌子之后的所有桌子。

$regular = "/<table class=\"results\" cellspacing=\"(\d+)\" cellpadding=\"(\d+)\" border=\"(\d+)\" (.*)>(.*)<\/table>\n(.*)<\/style>/s";
    preg_match_all($regular,$str, $matches2, PREG_PATTERN_ORDER);
4

1 回答 1

1

有些人在评论中指出您“无法在正则表达式中解析 HTML”。这并不完全准确。可以办到。

但是,这很困难且容易出错,最后你会得到一个有点混乱的结构。

因此,我强烈建议改用 PHP 内置的 HTML 解析器。使用非常简单:

$doc = new DOMDocument();
$doc->loadHTML($htmlCode);

然后,您可以使用生成的对象来提取您需要的数据。

$tables = $dom->getElementsByTagName('table');
foreach ($tables as $table){
    $cells = $table->getElementsByTagName('td');
    foreach ($cells as $cell){
        echo $cell->nodeValue;
    }
}

有关更多信息,请参阅 PHP 手册:http: //php.net/manual/en/book.dom.php

于 2012-08-16T14:18:56.273 回答