做采集中,需要用到php下载图片,在网上收集了一下,做了两个, 其中第一个用到readfile, 这个函数需要你的虚拟主机php.ini的设定allow_url_fopen = On , 例如我现在用的Dreamhost主机就是allow_url_fopen = Off,而在网上有教怎样打开Dreamhost的allow_url_fopen =On, 所以建议使用第二个函数,不过需要到网上下载snoopy类,这个使用sock, 不怕有问题.
以下为代码:
——————
函数1
function getImage($url,$filename=””) {
if(!$url) return false;if(!$filename) {
$ext=strrchr(strtolower($url),”.”) ;
if($ext!=”.gif” && $ext!=”.jpg” && $ext!=”.png”) return false ;
$str=explode(‘/’,$url) ;
$filename=$str[count($str)-1] ;
//print $filename.”\n”;
}ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$fp2=@fopen($filename, “a”) ;
fclose($fp2) ;return $filename;
}
用法:
getImage(“https://www.lpfrx.com/wp-content/themes/ProSense/images/rss-feed-icon.jpg”);
—————————————————
函数2, 这个需要用到php的snoopy类
function downimage($furl)
{$filename=””;
$str=explode(‘/’,$furl) ;
$filename= $str[count($str)-1] ;$snoopyx = new Snoopy ;
$snoopyx->fetch($furl) ;if($snoopyx->results !=””)
{
$handle = fopen($filename, ‘w’) ;
fwrite($handle, $snoopyx->results) ; //把抓取得内容写到 临时文件中
fclose($handle) ;
}
return $filename ;}
用法:
downimag(“https://www.lpfrx.com/wp-content/themes/ProSense/images/rss-feed-icon.jpg”);
题外话:
写这些函数时, 把这些函数粘贴到这个wordpress编辑器时总不能发布,一发布或者保存就出错,跟住逐行一句一句代码写下去,发觉到在代码含有fopen那行时,结尾一加上 ; 号时就不能发布了,在fopen()再加个空格然后才写上 ; 就没有错误了,猜想可能这个Dreamhost空间加了关于fopen函数的过滤限制,所以出问题.