php函数把图片保存到指定本地硬盘的匹配方法
温馨提示:这篇文章已超过503天没有更新,请注意相关的内容是否还可用!
获得网站中的照片地址并储存下载我们必须收集页面,然后再运用正则表达式获得页面中的截图url,然后我们再通过相关的php函数把照片储存到指定本地硬盘了。
1.获取地址
这个功能最主要的就是用正则表达式来匹配页面源码里的照片地址了,这里用到得正则表达式是:
代码如下
复制代码
/
/iU
首页通过PHP自带的调用文件函数来获取请求页面的html代码,然后用正则表达式来匹配上面的src地址,这里有两个注意点:
■
只能获得到静态的页面内容php采集源码,也就是说假如你在页面里发现的是照片是借助来展现的,通过这个软件是获得不到照片信息的
■有的网站对这个函数做了些限制,如果不是借助浏览器开启的网站,服务器是答应请求的,这个之后我们就必须给php程序添加一个配置信息,让收集的程序无法模拟一个留言器的UA(useragent),具体的做法可以借助以下的代码来推动://目前模拟的是一个环境下的浏览器
('','/4.0(;MSIE8.0;NT5.1;/4.0;.560;.NET4.0C;.NET4.0E)');
通过以上两点的处理,获取网站源码就没有问题了php采集源码,唯一要做的就是用正则表达式对截图地址的匹配。
示例1
代码如下
复制代码
/**
*获取替换文章中的截图路径
*@param$xstr内容采集网页的
*@param$创建图片的文件名我写upimg
*@param$网址一般写null
*@
*
*/
($xstr,$,$){
$=();
//保存路径
$d=date('Ym',time());
$=$.'/..//'.$.'/'.$d;//分类是否存在
if(!($)){
@mkdir($,0777);
}
//匹配图片的src
('#
]*>#i',$xstr,$match);
($match[1]as$){
$=$;
if((($,'http'))){
$=$;
}else{
$=$.$;
}
$img=($);
if(!empty($img)){
//保存截图到服务器
$=time()."-".rand(1000,9999).".jpg";
$=$."/".$;
$=($,$img);
$="//$"."/".$d."/".$;
$xstr=($,$,$xstr);
}
}
$xstr;
}
或许有些同学也明白性能不怎样样,我们可使用curl来获得
代码如下
复制代码
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载模式
*当保存文件名称为空时则使用远程文件原本的名称
*/
($url,$='',$='',$type=0){
if(trim($url)==''){
array(''=>'',''=>'','error'=>1);
}
if(trim($)==''){
$='./';
}
if(trim($)==''){//保存文件名
$ext=($url,'.');
if($ext!='.gif'&&$ext!='.jpg'){
array(''=>'',''=>'','error'=>3);
}
$=time().$ext;
}
if(0!==($,'/')){
$.='/';
}
//创建保存目录
if(!($)&&!mkdir($,0777,true)){
array(''=>'',''=>'','error'=>5);
}
//获得远程文件所采取的方式
if($type){
$ch=();
$=5;
($ch,,$url);
($ch,ER,1);
($ch,UT,$);
$img=($ch);
($ch);
}else{
();
($url);
$img=();
();
}
//$size=($img);
//文件大小
$fp2=@fopen($.$,'a');
($fp2,$img);
($fp2);
unset($img,$url);
array(''=>$,''=>$.$,'error'=>0);
}
本文来自网络,如有侵权请联系网站客服进行删除
还没有评论,来说两句吧...