首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组只打印最后值

数组只打印最后值
EN

Stack Overflow用户
提问于 2017-07-21 09:03:24
回答 1查看 404关注 0票数 1

考虑下面的php代码,它为客户的电子邮件抓取客户端的旧静态网站.

代码语言:javascript
复制
$urls = explode(PHP_EOL, file_get_contents('urls.txt'));

print '<pre>'; print_r($urls); print '</pre>';

print '<strong>Results:</strong><br>';

function get_emails($url) {
    $html = file_get_contents($url);
    
    $dom = new DOMDocument;
    @$dom->loadHTML($html);
    $links = $dom->getElementsByTagName('a');

    foreach ($links as $link){
        $href = $link->getAttribute('href');
        if (strpos($href, 'mailto') !== false) {
            return str_replace("mailto:","",$href) . '<br>';
        }
    }
}
    
foreach ($urls as $key => $url) {
  print get_emails($url);
}

我正在从urls.txt读取一个url列表,但是结果只是文件中最后一个url的结果。其他的都被忽略了。我曾希望它会返回一个很好的名单,他所有的客户网址,以便我们可以导入到新的网站。

有人能帮忙诊断这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 09:07:21

是因为:-

代码语言:javascript
复制
return str_replace("mailto:","",$href) . '<br>';

它将终止循环的执行。

1.要么做:-

代码语言:javascript
复制
$urls = explode(PHP_EOL, file_get_contents('urls.txt'));

print '<pre>'; print_r($urls); print '</pre>';

print '<strong>Results:</strong><br>';

function get_emails($url) {
    $html = file_get_contents($url);

    $dom = new DOMDocument;
    @$dom->loadHTML($html);
    $links = $dom->getElementsByTagName('a');

    foreach ($links as $link){
       $href = $link->getAttribute('href');
       echo str_replace("mailto:","",$href) . '<br>';
    }
}

foreach ($urls as $key => $url) {
  get_emails($url);
}

2.或如下所示:-

代码语言:javascript
复制
$urls = explode(PHP_EOL, file_get_contents('urls.txt'));

print '<pre>'; print_r($urls); print '</pre>';

print '<strong>Results:</strong><br>';

function get_emails($url) {
    $html = file_get_contents($url);
    $data = array(); //define array
    $dom = new DOMDocument;
    @$dom->loadHTML($html);
    $links = $dom->getElementsByTagName('a');

    foreach ($links as $link){
        $href = $link->getAttribute('href');
        $data[] = str_replace("mailto:","",$href) . '<br>'; //assign  each value to the array

    }
   return $data;
}

foreach ($urls as $key => $url) {
  print_r(get_emails($url));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45233502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档