【问题标题】:Remove duplicate values from array - array_unique() not working从数组中删除重复值 - array_unique() 不起作用
【发布时间】:2012-04-09 14:33:28
【问题描述】:

我有一个从网站 (4chan) 抓取图像的脚本。它必须通过从锚标签而不是图像中获取 url 来做到这一点,否则它只会获取缩略图。问题是图片的url出现在两个锚标签中,因此每张图片出现两次。

我尝试将它们放入一个数组中,然后应用 array_unique() 但它不起作用。

这是我的代码:

foreach($html->find('a') as $element) {
    if (strpos($element->href, "/src/")){
    $a = $element->href;    
    $ht = "<img src=\"" . $a. "\" />\n";
    $arr = array($ht);
    $arr = array_unique($arr);
    foreach($arr as &$b) {
            echo $b;
        }
    }
}

提前感谢您的帮助!

【问题讨论】:

    标签: php arrays image web-scraping


    【解决方案1】:

    您没有添加到数组中,而是在每次迭代时重新定义 $arr。试试这个:

    $arr = array();
    foreach($html->find('a') as $element) {
        if (strpos($element->href, "/src/")){
            $a = $element->href;    
            $ht = "<img src=\"" . $a. "\" />\n";
            $arr[] = $ht; 
        }
    }
    $arr = array_unique($arr);
    foreach($arr as &$b) {
        echo $b;
    }
    

    【讨论】:

    • 给出了很多错误,似乎都源于:未定义的变量:arr
    • 这会增加重复的数量
    • 我的意思是,这发生了:aviatex14.co.uk/apps/…
    • 我的代码(和您的原始代码)缺少结束 }。现在修好了。从您的链接来看,4chan 似乎检测到您正试图窃取他们的图像,并改为提供该标准徽标。
    • 很有魅力,非常感谢,至于 4chan 检测,我看不到,但是由于所有存档站点,他们不会阻止这样的东西 :) 感谢您的帮助: P
    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多