Foreach有多个选择器。

时间:2013-01-26 23:50:01

标签: php

我认为对此的答案可能很简单,但我很难过。我正在使用以下一小段代码从一些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]。

谢谢

2 个答案:

答案 0 :(得分:0)

据我了解,您希望在数组中创建唯一比较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>";
}

答案 1 :(得分:0)

由于无法使用DOM执行此操作,因此我采用了不同的路线。我在初始示例中使用了代码,但从我搜索的内容中删除了一个属性。我抓住了两个div标签的innertext。写到我的数据库然后用正则表达式获取信息要容易得多。

DOM非常适合非凌乱的HTML。