DOM:获取文档中的所有文本节点(PHP)
问题描述:
我有以下(PHP)代码遍历整个DOM文档以获取所有文本节点。这是一个难以理解的解决方案,我相信肯定有更好的方法......所以,那里?DOM:获取文档中的所有文本节点(PHP)
$skip = false;
$node = $document;
$nodes = array();
while ($node) {
if ($node->nodeType == 3) {
$nodes[] = $node;
}
if (!$skip && $node->firstChild) {
$node = $node->firstChild;
} elseif ($node->nextSibling) {
$node = $node->nextSibling;
$skip = false;
} else {
$node = $node->parentNode;
$skip = true;
}
}
谢谢。
答
您需要的XPath表达式是//text()
。尝试使用DOMXPath::query
。例如:
$xpath = new DOMXPath($doc);
$textnodes = $xpath->query('//text()');
答
preg_split会为您工作吗?
$textNodes = preg_split('/<[^]+>/', $documentContent, -1, PREG_SPLIT_NO_EMPTY);
+2
请勿使用或依赖正则表达式来解析或修改XML /(X)HTML/DOM内容。阅读此:http://*.com/a/1732454/1879194 – Kafoso 2015-09-11 09:23:30
完美,谢谢! :-) – 2009-04-20 15:47:43