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()'); 
+0

完美,谢谢! :-) – 2009-04-20 15:47:43

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