我有一种情况,需要提取xHTML页面的一部分,包括标记。
在这种情况下,regex不是正确的途径,因为我不能保证子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进行了一些研究,它似乎是完成这项工作的方法,但我不确定如何使它不仅返回节点的值,还返回所有相关的标记。
您是正确的,这可以通过DOMDocument和XPath实现,比如:
$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>
。