我试图创建一个脚本来从链接列表中下载网站图标:
我的文件link_list.txt
如下所示:
stackoverflow.com
http://google.com
www.gmail.com
facebook.com
我正在使用以下库来检查和下载网站图标:
我的脚本当前如下所示:
<?php
require_once 'vendor/autoload.php';
use Vincepare\FaviconDownloader\FaviconDownloader;
$fh = fopen(dirname(__FILE__).DIRECTORY_SEPARATOR . 'link_list.txt','r');
while ($line = fgets($fh)) {
//if the url has not http:// add it
if(preg_match("@^http://@i",$line))
$line = preg_replace("@(http://)+@i",'http://',$line);
else
$line = 'http://'.$line;
echo('URL: ' . $line."\n");
$favicon = new FaviconDownloader($line);
if (!$favicon->icoExists) {
echo "No favicon for ".$favicon->url;
}
// get name of url
$parts = parse_url($line);
$path_parts = explode('.', isset($parts['host'])?$parts['host']:$parts['path']);
echo 'Filename: fav-'. $path_parts[0] .'.ico' . "\n";
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'fav-'. $path_parts[0] . '.ico';
file_put_contents($filename, $favicon->icoData);
echo "Saved to ".$filename."\n\n";
}
fclose($fh);
运行脚本时,我只能下载最后一个图标。在此示例中,只有facebook:
任何建议我的脚本有什么问题吗?
感谢您的答复!
更新
当var_dump($favicon)
我得到:
class Vincepare\FaviconDownloader\FaviconDownloader#2 (13) {
public $url =>
string(21) "http://www.gmail.com
"
public $pageUrl =>
NULL
public $siteUrl =>
NULL
public $icoUrl =>
NULL
public $icoType =>
NULL
public $findMethod =>
NULL
public $error =>
string(31) "Illegal characters found in URL"
public $icoExists =>
NULL
public $icoMd5 =>
NULL
public $icoData =>
NULL
public $debugInfo =>
array(1) {
'document_curl_errno' =>
int(3)
}
protected $httpProxy =>
NULL
protected $sslVerify =>
bool(true)
}
我猜下载器不喜欢\n
。有什么建议可以解决该问题吗?
答案 0 :(得分:-2)
您是否尝试过打开图标,它们在那里,因此可以正常工作。如果它不起作用,可能是它尚未下载或已损坏。至于脚本,我不了解PHP,因此我无法为您提供脚本帮助。