1

我有一种情况需要提取 xHTML 页面的一部分,包括标记。

在这种情况下,正则表达式不是正确的路线,因为我不能保证子 div 的确切数量。

<div id="myDiv">
    <div><p>This is some content</p></div>
    <div><p>This additional content</p></div>
</div>

因此,在上面的代码片段中,我需要提取<div><p>This is some content</p></div>包含标记的 .

我已经对使用 xPath 进行了一些研究,这似乎是完成这项工作的方法,但我不确定如何让它不仅返回节点的值,而且返回所有相关的标记。

4

1 回答 1

1

你是对的,这可以通过DOMDocumentXPath来实现,如下所示:

$doc = new DOMDocument();
$doc->loadHTML( $html); // Load the HTML snippet

$xpath = new DOMXPath( $doc);
$node = $xpath->query( '//div[@id="myDiv"]/div')->item(0); // Get the <div>

$saved_node = $doc->saveHTML( $node); // Export that node

输出中,您可以看到所需的字符串,包括标记:

string(62) "<div><p>This is some content</p></div>" 

请注意,我必须运行输出,htmlentities()这样您就可以在<div>不查看页面源代码的情况下看到。

于 2012-07-16T17:12:35.673 回答