具有多个选择器的Foreach


Foreach with multiple selectors.

我认为答案可能很简单,但我被难住了。 我正在使用以下一小段代码从某些 html 中获取信息,然后将其写入数据库。(目前只显示它)

foreach($html->find('div[class=posttitle front] a, div[class=copy post] a') as $a){
$articles[] = array($a->href,$a->innertext);
}
foreach($articles as $item) {
echo "<p>";
$href =  $item[0];
echo "</p><p>"; 
echo $href;
echo "</p><p>";
echo $item[2];
echo "</p>";
}

代码工作正常。我得到了我需要的一切。但是由于多个选择器返回的信息是针对同一链接的,因此对于每个链接,我为每个选择器都会得到一个$articles[0[和$articles[1],这很痛苦。

基本上,这两个选择器具有有关同一链接的信息。

我不知道如何问得更清楚,对不起。 基本上我想要的是$articles[0],[1],[2],[3]。

谢谢

据我了解,您想在数组中制作唯一的记录比较href.你只需要使用 href 作为数组的键:

foreach($html->find('div[class=posttitle front] a, div[class=copy post] a') as $a){
    $articles[$a->href] = $a->innertext;
}
foreach($articles as $href=>$innertext) {
    echo "<p>";
    echo "</p><p>"; 
    echo $href;
    echo "</p><p>";
    echo $innertext;
    echo "</p>";
}
由于无法使用

DOM执行此操作,我走了一条不同的路线。 我在初始示例中使用了代码,但从我正在搜索的内容中删除了 a 属性。 我只抓住了两个div 标签的内部文本。 把它写到我的数据库,然后用正则表达式获取信息要容易得多。

DOM 非常适合非杂乱的 html。