站长图库

PHP远程采集正则图片案例

 发布时间 2018-11-21 17:16:44 热度 793

 Tag标签:  PHP采集正则

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


<?php
//图片接口地址(这里还是要拿小诗梦开刀)
$url = 'https://******/';
// 图片存放文件夹
$path = 'images/';
$str = file_get_contents($url);
preg_match_all('/<img alt="\/\/(.*?)" src="\/\/(.*?)" \/>/',$str,$img);
$imgUrl = 'https://'.$img[2][0];
if(!$imgUrl){
exit(json_encode(array('error'=>'采集失败')));
}
$filename = basename($imgUrl);
$filenames = $path.$filename;
if(file_exists($filenames)){
  //文件已经存在
  echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'202'));
}else{
  if(download($imgUrl,$path)){
    //采集成功
    echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'200'));
  }else{
    //采集失败
    echo json_encode(array('url'=>$imgUrl,'filename'=>$filenames,'state'=>'201'));
  }
}
function download($url, $path = 'images/')
{
  //远程下载保存
  if (! file_exists ( $path )) {
    mkdir ( "$path", 0777, true );
  }
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  $file = curl_exec($ch);
  curl_close($ch);
  $filename = pathinfo($url, PATHINFO_BASENAME);
  $resource = fopen($path . $filename, 'a');
  fwrite($resource, $file);
  fclose($resource);
  return true;
}
?>

评论(0)条

    站长图库

    站长素材 - 建站资源分享平台

    猜你喜欢
    jQuery左侧固定导航栏插件stickySidebar

    jQuery左侧固定导航栏插件stickySidebar

    其他 119 2020-02-16

    jQuery左侧固定导航栏插件stickySidebar是一款在用户向下滚动页面到一定距离时,侧边栏就会固定随页面往下滚...

    jQuery鼠标滑过图片向上弹出放大

    jQuery鼠标滑过图片向上弹出放大

    图片特效 178 2020-01-16

    jQuery鼠标滑过图片向上弹出放大是一款基于jquery+css3实现的鼠标滑过,图片向上滑出放大特效代码。

    华登区块鱼区块宠物养殖系统源码 完美修复版

    华登区块鱼区块宠物养殖系统源码 完美修复版

    其他源码 851 2019-07-30

    华登区块鱼区块宠物养殖系统源码 完美修复版,派特宠物街模式区块链源码,程序配套有安卓APP,APP在\public\ap...

    皇冠图标标识设计矢量素材下载

    皇冠图标标识设计矢量素材下载

    UI元素 171 2020-02-25

    皇冠图标标识设计矢量素材,适用于会员等级皇冠图标设计使用。