有没有办法可以从 HTML 字符串中检索所有纯文本节点的数组?我希望它能够独立检索“嵌套”元素,因此字符串如下:
<p>This is a <b>nested <i>HTML</i> tag<b>...</p>
将被检索为 This is a
、nested
、HTML
、tag
和 。 ..
作为单独的元素。
谷歌搜索和搜索使我将这些困惑的代码拼凑在一起:
$doc = new DOMDocument();
$doc->loadHTML($contents);
$doc->loadHTML("<p>not in the brackets..</p>");
$xpath = new DOMXPath($doc);
$textnodes = $xpath->evaluate('//text()');
echo '<pre>'.print_r($textnodes,1).'</pre>';die;
这给了我:
DOMNodeList Object
(
)
我以前从未使用过任何 DOM 对象 - 我的 XPath 也不是很好 - 所以我在这里感觉非常无水!任何帮助将不胜感激。
最佳答案
XPath 返回一个 DOMNodeList,需要对其进行正确评估。这是一个基于标签的示例:
$xpath = new DOMXpath( $templateDOM );
$xpath->registerNamespace( "fcm", "http://www.w3.org/1999/xhtml" );
$entries = $xpath->query( "//img" );
foreach( $entries as $entry ) {
$newVar = array(
'src' => @$entry->attributes->getNamedItem( 'src' )->nodeValue,
'title' => $entry->attributes->getNamedItem( 'title' )->nodeValue,
);
...
}
关于PHP DOM 解析所有文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100828/