PHP-html-Dom;问题是结果重复
尝试为div遍历dom并在执行时缩进它。它可以工作,除了有重复的。我可以保存到数组中并检查重复项,但不知道是否有更简单的方法。谢谢PHP-html-Dom;问题是结果重复,php,dom,Php,Dom,尝试为div遍历dom并在执行时缩进它。它可以工作,除了有重复的。我可以保存到数组中并检查重复项,但不知道是否有更简单的方法。谢谢 function dom_parse_div_tag($htmlfile) { libxml_use_internal_errors(true); // supresses dom warnings $dom = new DOMDocument(); $dom->preserveWhiteSpace = false; $dom->loadHTML
function dom_parse_div_tag($htmlfile)
{
libxml_use_internal_errors(true); // supresses dom warnings
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($htmlfile);
$nodes = $dom->getElementsByTagName("div");
foreach ($nodes as $ii=>$node) {
echo "<br>";
$nodeclass = $node->attributes->getNamedItem('class');
if (isset($nodeclass))
echo "Class:" . $nodeclass->nodeValue ."<br>";
dom_child_node_print($node,0);
}
}
function dom_child_node_print($node,$level)
{
echo "<br>";
if($node->hasChildNodes()) {
$nclass = $node->attributes->getNamedItem('class');
if (isset($nclass))
echobr("Class:" . $nclass->nodeValue);
foreach ($node->childNodes as $ochildnode) {
if($ochildnode->hasChildNodes()) {
dom_child_node_print($ochildnode, $level + 1);
}
else {
if (trim($ochildnode->nodeValue) !== "") {
echo "Level$level," . strg_remove_linefeed($ochildnode->nodeValue) ."<br>";
}
}
}
}
}
函数dom\u parse\u div\u标记($htmlfile)
{
libxml_use_internal_errors(true);//禁止dom警告
$dom=新的DOMDocument();
$dom->preserveWhiteSpace=false;
$dom->loadHTML($htmlfile);
$nodes=$dom->getElementsByTagName(“div”);
foreach($ii=>$node的节点){
回声“
”;
$nodeclass=$node->attributes->getNamedItem('class');
if(isset($nodeclass))
echo“类:”.$nodeclass->nodeValue。“
”;
dom_子节点节点打印($node,0);
}
}
函数dom\u child\u node\u print($node,$level)
{
回声“
”;
如果($node->hasChildNodes()){
$nclass=$node->attributes->getNamedItem('class');
如果(isset($nclass))
echobr(“类:.$nclass->nodeValue);
foreach($node->childNodes作为$ochildnode){
如果($ochildnode->hasChildNodes()){
dom_child_node_print($ochildnode,$level+1);
}
否则{
如果(修剪($ochildnode->nodeValue)!=“”){
回显“Level$Level,”.strg_remove_linefeed($ochildnode->nodeValue)。“
”;
}
}
}
}
}
<代码>你认为复制品是什么?你能举个HTML的例子吗?您也可以阅读关于DOMXpath::evaluate()
。它将允许您以列表的形式获取节点,而无需递归。