0

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

谢谢

4

2 回答 2

0

由于无法使用 DOM 执行此操作,我选择了另一条路线。我在最初的示例中使用了代码,但从我正在搜索的内容中删除了 a 属性。我只抓住了两个 div 标签的内部文本。将其写入我的数据库,然后使用正则表达式获取信息要容易得多。

DOM 非常适合非凌乱的 html。

于 2013-01-29T01:43:16.670 回答
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>";
}
于 2013-01-26T23:54:25.340 回答