【发布时间】:2017-12-27 06:14:28
【问题描述】:
考虑以下 php 代码,它正在为客户的电子邮件抓取客户的旧静态网站...
$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 之一。所有其他的都被忽略了。我曾希望它会返回他所有客户 url 的一个很好的列表,以便我们可以将它们导入新站点。
有人可以帮助诊断问题吗?
【问题讨论】:
-
为什么要在 foreach 循环中返回?回声...
-
刚刚更新为 echo,同样的事情还在发生——只得到最后一个结果
-
那么您的数组中只有一件事与您的 if 语句匹配,注释掉 if 语句并尝试使用 echo :)
-
试过了,如果我一次只将每个 url 放入 urls.txt 中,我会得到每个的结果,因此脚本适用于单个 url,但只有在如果它们作为数组输出
-
hm,你能 var_dump 你的数组并用输出编辑问题吗?