PHP远程采集正则图片案例

 4499

很多时候我们需要采集其他网站的图片到本地,主要是为了稳定性,以及方便管理。下面提供一段代码。大家参考!


  1. <?php
  2. //图片接口地址(这里还是要拿小诗梦开刀)
  3. $url = 'https://******/';
  4. // 图片存放文件夹
  5. $path = 'images/';
  6. $str = file_get_contents($url);
  7. preg_match_all('/<img alt="\/\/(.*?)" src="\/\/(.*?)" \/>/',$str,$img);
  8. $imgUrl = 'https://'.$img[2][0];
  9. if(!$imgUrl){
  10. exit(json_encode(array('error'=>'采集失败')));
  11. }
  12. $filename = basename($imgUrl);
  13. $filenames = $path.$filename;
  14. if(file_exists($filenames)){
  15.   //文件已经存在
  16.   echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'202'));
  17. }else{
  18.   if(download($imgUrl,$path)){
  19.     //采集成功
  20.     echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'200'));
  21.   }else{
  22.     //采集失败
  23.     echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'201'));
  24.   }
  25. }
  26. function download($url, $path = 'images/')
  27. {
  28.   //远程下载保存
  29.   if (! file_exists ( $path )) {
  30.     mkdir ( "$path", 0777, true );
  31.   }
  32.   $ch = curl_init();
  33.   curl_setopt($ch, CURLOPT_URL, $url);
  34.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  35.   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
  36.   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  37.   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  38.   $file = curl_exec($ch);
  39.   curl_close($ch);
  40.   $filename = pathinfo($url, PATHINFO_BASENAME);
  41.   $resource = fopen($path . $filename, 'a');
  42.   fwrite($resource, $file);
  43.   fclose($resource);
  44.   return true;
  45. }
  46. ?>

TAG标签:
本文网址:https://www.zztuku.com/index.php/detail-7619.html
站长图库 - PHP远程采集正则图片案例
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐