仓酷云

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

[学习教程] PHP网页设计分享一个PHP收集近程图片

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:28:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...     

  • <?php  
  • /*利用PHP完成收集近程图片功效。根基流程:  
  •    
  • 1、获得方针网站图片地址。  
  •    
  • 2、读取图片内容。  
  •    
  • 3、创立要保留图片的途径并定名图片称号。  
  •    
  • 4、写入图片内容。  
  •    
  • 5、完成。  
  •    
  • 咱们经由过程写几个函数来完成这一进程。*/  
  •    
  • //函数make_dir()创立目次。判别要保留的图片文件目次是不是存在,假如不存在则创立目次,而且将目次设置为可写权限。  
  • function make_dir($path){   
  •      if(!file_exists($path)){//不存在则创立   
  •          $mk=@mkdir($path,0777); //权限   
  •          @chmod($path,0777);   
  •      }   
  •      return true;   
  • }   
  •    
  • //函数read_filetext()获得图片内容。利用fopen翻开图片文件,然后fread读取图片文件内容。  
  • function read_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写入文件中,即保留图片文件。  
  • function write_filetext($filepath,$string){   
  •      //$string=stripSlashes($string);   
  •      $fp=@fopen($filepath,"w");   
  •      @fputs($fp,$string);   
  •      @fclose($fp);   
  • }   
  •    
  •    
  • //函数get_filename()获得图片称号,也能够自界说要保留的文件名。  
  • function get_filename($filepath){   
  •      $fr=explode("/",$filepath);   
  •      $count=count($fr)-1;   
  •      return $fr[$count];   
  • }   
  •    
  •    
  • //然后将几个函数组合,在函数save_pic()中挪用,最初前往保留后的图片途径。  
  • function save_pic($url,$savepath=''){   
  •      //处置地址   
  •      $url=trim($url);   
  •      $url=str_replace(" ","%20",$url);   
  •      //读文件   
  •      $string=read_filetext($url);   
  •      if(emptyempty($string)){   
  •          echo '读取不了文件';exit;   
  •      }   
  •      //文件名   
  •      $filename = get_filename($url);   
  •      //寄存目次   
  •      make_dir($savepath); //创立寄存目次   
  •      //文件地址   
  •      $filepath = $savepath.$filename;   
  •      //写文件   
  •      write_filetext($filepath,$string);   
  •      return $filepath;   
  • }   
  •    
  •    
  • //最初一步就是挪用save_pic()函数保留图片,咱们利用以下代码做测试。  
  • //方针图片地址   
  • //$pic = "/program/UploadPic/2013-5/2013510152511166.jpg";   
  • // for($i=100; $i<=204; $i++)  
  • // {  
  •      // $pic = 'http://cache.soso.com/img/img/e'.$i.'.gif';  
  • ////保留目次   
  • // $savepath = "images/";   
  • // echo save_pic($pic,$savepath)."<br />";   
  • // }  
  •    
  •    
  • /*  
  • 实践使用中,咱们能够会收集某个站点的内容,好比产物信息,包含收集防盗链的图片保留到网站上办事器上。这时候咱们可使用正则婚配页面内容,将页面中相婚配的图片都找出来,然后分离下载到网站办事器上,完成图片的收集。以下代码仅供测试:  
  • */  
  • function get_pic($cont,$path){   
  •      $pattern_src = '/<[imgIMG].*?src=http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0507/[/'/"](.*?(?:[/.gif/.jpg]))[\'\"].*?[\/]?>/';   
  •      $num = preg_match_all($pattern_src, $cont, $match_src);   
  •      $pic_arr = $match_src[1]; //取得图片数组   
  •      foreach ($pic_arr as $pic_item) { //轮回掏出每幅图的地址   
  •          save_pic($pic_item,$path); //下载并保留图片   
  •          echo "[OK]..!<br />";   
  •      }   
  • }   
  •    
  • //然后咱们经由过程剖析页面内容,将主体内容找出来,挪用get_pic()完成图片的保留。  
  •    
  • //咱们收集宁靖洋电脑网上一篇关于手机报导内容页的图片  php100.com
  • $url = "http://gz.pconline.com.cn/321/3215791.html";   
  •    
  • $content = file_get_contents($url);//获得网页内容   
  • $preg = '#<div class="art_con">(.*)<div class="ivy620 ivy620Ex"></div>#iUs';   
  • preg_match_all($preg, $content, $arr);   
  • $cont = $arr[1][0];   
  • get_pic($cont,'img/');   
  •    
  • /*  
  • 以上代码笔者亲测,可以收集图片,然而还有些场景没思索出来,好比方针网站做了302屡次跳转的,方针网站做了多种防收集的,留给喜好折腾的同窗去尝尝吧。  
  • */  
  • ?>  
怎样学习,大家都知道编程是1门很枯燥的事业,所以大家一定要有兴趣,可能刚开始打算学的时候是因为别人说php有多好,php多么流行,但是后来伴随着学习的深入,你的这些
小女巫 该用户已被删除
沙发
发表于 2015-2-3 23:30:35 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
再见西城 该用户已被删除
板凳
发表于 2015-2-7 18:00:32 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-15 10:18:42 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
若天明 该用户已被删除
5#
发表于 2015-2-18 12:27:40 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
小妖女 该用户已被删除
6#
发表于 2015-2-25 23:20:07 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
山那边是海 该用户已被删除
7#
发表于 2015-3-4 04:35:59 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
若相依 该用户已被删除
8#
发表于 2015-3-11 16:44:21 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
飘灵儿 该用户已被删除
9#
发表于 2015-3-15 15:01:04 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
活着的死人 该用户已被删除
10#
发表于 2015-3-22 01:29:09 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
11#
发表于 2015-4-10 21:36:03 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
不帅 该用户已被删除
12#
 楼主| 发表于 2015-4-10 23:08:47 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
简单生活 该用户已被删除
13#
发表于 2015-4-15 13:22:46 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
再现理想 该用户已被删除
14#
发表于 2015-4-16 13:35:29 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
柔情似水 该用户已被删除
15#
发表于 2015-4-22 19:48:03 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
透明 该用户已被删除
16#
发表于 2015-4-26 16:46:54 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
第二个灵魂 该用户已被删除
17#
发表于 2015-4-29 17:18:08 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
分手快乐 该用户已被删除
18#
发表于 2015-4-30 22:24:45 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
兰色精灵 该用户已被删除
19#
发表于 2015-5-6 20:09:38 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
莫相离 该用户已被删除
20#
发表于 2015-5-11 16:10:32 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 08:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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