我正在使用PHPSimpleHTMLDOM Parser,我想以某种方式实现具有两个条件的foreach循环。我正在获得我想要的头条新闻,但我也希望获得适用于该特定标题的href。如果我单独为href编写一个嵌套的foreach循环,它会循环太多次并输出许多重复项。这是我的代码:
include_once ('simple_html_dom.php');
$html = file_get_html('somehtml.com');
foreach ($html->find('ul[class=headlines] li') as $return){
//if I put another foreach here, too many duplicates
echo $return;
}
另一个foreach循环如下所示:
foreach ($html->find('ul[class=headlines] li a') as $href){
$link = $href->href;
echo $link;
}
如何将这两个条件放入一个foreach循环中,以便链接对应正确的文章,我可以将它传递给另一个php文件来执行某些操作?提前致谢
答案 0 :(得分:0)
假设您具有以下HTML结构:
<ul class="headlines">
<li><a href="http://google.com">Google</a></li>
<li><a href="http://yahoo.com">Yahoo</a></li>
<li><a href="http://bing.com">Bing</a></li>
</ul>
然后你必须遍历所有的li
项并获取与a
标签相对应的第n个孩子(在这种情况下它是第一个),就像那样:
foreach ($html->find('ul[class=headlines] li') as $return){
$a = $return->children(0);
echo 'Link: ' . $a->href . '<br />';
echo 'Headline: ' . $a->plaintext . '<br />';
}
请注意,您只需在此处打印$a
,而无需单独提取链接和标题。
我建议您使用基于libxml的某些原生扩展程序以获得更好的性能,例如DOM。您还可以将其与XPath结合使用,以简化操作。