php简单dom解析器,查找没有标题作为父项的链接

php简单dom解析器,查找没有标题作为父项的链接,php,simple-html-dom,Php,Simple Html Dom,也许我的方法不正确,所有的建议都很感激 我试图从一个网页上刮下所有a标签,然后按如下顺序订购 h1、h2、h3、h4、h5、h6、a(所有其他) 我的代码到目前为止 $layout['h1']=$html->find('h1 a'); $layout['h2']=$html->find('h2 a'); $layout['h3']=$html->find('h3 a'); $layout['h4']=$html->find('h4 a'); $layout['h5']=$

也许我的方法不正确,所有的建议都很感激 我试图从一个网页上刮下所有a标签,然后按如下顺序订购 h1、h2、h3、h4、h5、h6、a(所有其他) 我的代码到目前为止

$layout['h1']=$html->find('h1 a');
$layout['h2']=$html->find('h2 a');
$layout['h3']=$html->find('h3 a');
$layout['h4']=$html->find('h4 a');
$layout['h5']=$html->find('h5 a');
$layout['h6']=$html->find('h6 a');
$layout['a']=$html->find('a');

//then i can print the arrays as follows
foreach ($layout as $key=>$value){
    foreach ($layout[$key] as $text) {
       echo $text.' |  ';
    }
}   
这一切在输出时都很好,但是我的问题是如何获得没有标题标签的标签

举个例子,我能不能用 $layout[all_links]=$html->find('a') 然后做一个循环,移除所有用标题标签包装的标签,并保留剩余的标签。我不知道该如何编码,也许是unset


提前感谢,我已经尝试了很多方法来实现这一点,但不知有没有人有更好的建议,或者我应该重新考虑整个功能

您可以执行以下操作:

foreach($html->find('a') as $a){
  if(!preg_match('/h[1-6]/', $a->parent->tag)) echo $a;
}

这将跳过父级不是a
h1
a
h6

看看突出显示的语法代码,它看起来很奇怪,对吗?你有很多错误dude@Joshua:我为他/她解决了这个问题。@Joshua谢谢你道歉尽管这个问题是问家长的,但我不确定祖先是否是真正的意思-至少选择器
hN a
不要求标题是链接的家长。这样,仅仅查看父节点就会失败。@CBroe-我一个字都不懂:)对于祖先,您需要加入while循环。好的,只要H[*]是父节点,这种方法就可以工作。我想我需要重新思考,一些程序员使用。。。谢谢你的回复,这是一个很大的帮助