仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 627|回复: 7
打印 上一主题 下一主题

[学习教程] PHP编程:利用PHP收罗远程图片

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 22:15:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
学校并没有那么多的时间可以让我们在实际开发上面。
当我们必要收罗收集上的某个网页内容时,假如方针网站上的图片做了防盗链的话,我们间接收罗过去的图片在本人网站上是不成用的。那末我们利用程序将方针网站上的图片下载到我们网站服务器上,然后便可挪用图片了。
本文将利用PHP完成收罗远程图片功效。基础流程:
1、猎取方针网站图片地点。
2、读取图片内容。
3、创立要保留图片的路径并定名图片称号。
4、写进图片内容。
5、完成。
我们经由过程写几个函数来完成这一历程。
函数make_dir()创建目次。判别要保留的图片文件目次是不是存在,假如不存在则创立目次,而且将目次设置为可写权限。
  1. functionmake_dir($path){if(!file_exists($path)){//不存在则创建$mk=@mkdir($path,0777);//权限@chmod($path,0777);}returntrue;}
复制代码
函数read_filetext()获得图片内容。利用fopen翻开图片文件,然后fread读取图片文件内容。
  1. functionread_filetext($filepath){$filepath=trim($filepath);$htmlfp=@fopen($filepath,"r");//远程if(strstr($filepath,"://")){while($data=@fread($htmlfp,500000)){$string.=$data;}}//当地else{$string=@fread($htmlfp,@filesize($filepath));}@fclose($htmlfp);return$string;}
复制代码
函数write_filetext()写文件,将图片内容fputs写进文件中,即保留图片文件。
  1. functionwrite_filetext($filepath,$string){//$string=stripSlashes($string);$fp=@fopen($filepath,"w");@fputs($fp,$string);@fclose($fp);}
复制代码
函数get_filename()猎取图片称号,也能够自界说要保留的文件名。
  1. functionget_filename($filepath){$fr=explode("/",$filepath);$count=count($fr)-1;return$fr[$count];}
复制代码
然后将几个函数组合,在函数save_pic()中挪用,最初前往保留后的图片路径。
  1. functionsave_pic($url,$savepath=){//处置地点$url=trim($url);$url=str_replace("","%20",$url);//读文件$string=read_filetext($url);if(empty($string)){echo读取不了文件;exit;}//文件名$filename=get_filename($url);//寄存目次make_dir($savepath);//创建寄存目次//文件地点$filepath=$savepath.$filename;//写文件write_filetext($filepath,$string);return$filepath;}
复制代码
最初一步就是挪用save_pic()函数保留图片,我们利用以下代码做测试。
  1. //方针图片地点$pic="/program/UploadPic/2013-4/201343155341353.jpg";//保留目次$savepath="images/";echosave_pic($pic,$savepath);
复制代码
实践使用中,我们大概会收罗某个站点的内容,好比产物信息,包含收罗防盗链的图片保留到网站上服务器上。这时候我们可使用正则婚配页面内容,将页面中相婚配的图片都找出来,然后分离下载到网站服务器上,完成图片的收罗。以下代码仅供测试:
  1. functionget_pic($cont,$path){$pattern_src=/<[imgIMG].*?src=http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0401/[//"](.*?(?:[/.gif/.jpg]))["].*?[/]?>/;$num=preg_match_all($pattern_src,$cont,$match_src);$pic_arr=$match_src[1];//取得图片数组foreach($pic_arras$pic_item){//轮回掏出每幅图的地点save_pic($pic_item,$path);//下载并保留图片echo"[OK]..!";}}
复制代码
然后我们经由过程剖析页面内容,将主体内容找出来,挪用get_pic()完成图片的保留。
  1. //我们收罗宁靖洋电脑网上一篇关于手机报导内容页的图片$url="http://gz.pconline.com.cn/321/3215791.html";$content=file_get_contents($url);//猎取网页内容$preg=#<divclass="art_con">(.*)<divclass="ivy620ivy620Ex"></div>#iUs;preg_match_all($preg,$content,$arr);$cont=$arr[1][0];get_pic($cont,img/);
复制代码
以上代码笔者亲测,能够收罗图片,可是另有些场景没思索出来,好比方针网站做了302屡次跳转的,方针网站做了多种防收罗的,留给喜好折腾的同砚往尝尝吧。
到现在,对排版还是不很熟练,经常会排不好。
兰色精灵 该用户已被删除
7#
发表于 2015-3-24 12:55:14 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
精灵巫婆 该用户已被删除
6#
发表于 2015-3-17 16:21:07 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
不帅 该用户已被删除
5#
发表于 2015-3-11 00:08:48 | 只看该作者
当然这种网站的会员费就几十块钱。
小女巫 该用户已被删除
地板
发表于 2015-3-1 21:04:06 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
再现理想 该用户已被删除
板凳
发表于 2015-2-11 03:44:55 | 只看该作者
实践是检验自己会不会的真理。
爱飞 该用户已被删除
沙发
发表于 2015-1-27 05:56:59 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
若相依 该用户已被删除
楼主
发表于 2015-1-19 06:19:09 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-20 18:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表