PHP获取文章中图片并下载图片到本地服务器的方法

  在项目运营中,经常需要从某篇文章中获取其中的图片并下载图片的需求,下面来说下在PHP中如何实现:

/**
 * 获取替换文章中的图片路径
 * @param string $xstr 内容
 * @param string $oriweb 网址
 * @return string
 *
 */
function replaceimg($xstr, $oriweb){
  //保存路径
  $d = date('Ymd', time());
  $saveimgfile_1 = '/uploads/allimg/'.$d;
  $dirslsitss = DEDEROOT.$saveimgfile_1;//分类是否存在
  if(!is_dir($dirslsitss)) {
    @mkdir($dirslsitss, 0777);
  }
  //匹配图片的src
  preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $xstr, $match);
  foreach($match[1] as $imgurl){
    $imgurl = $imgurl;
    if(is_int(strpos($imgurl, 'http'))){
      $arcurl = $imgurl;
    } else {
      $arcurl = $oriweb.$imgurl;
    }
    $img=file_get_contents($arcurl);
    if(!empty($img)) {
      //保存图片到服务器
      $fileimgname = time()."-".rand(1000,9999).".jpg";
      $filecachs=$dirslsitss."/".$fileimgname;
      $fanhuistr = file_put_contents( $filecachs, $img );
      $saveimgfile = $saveimgfile_1."/".$fileimgname;
      $xstr=str_replace($imgurl,$saveimgfile,$xstr);
    }
  }
  return $xstr;
}

本站原创内容,如需转载请注明来源:https://www.liutonghui.com/162.html

上一篇 2018-08-31
下一篇 2018-10-09

评论列表(0条)

  • 暂时没有评论!

发表评论

captcha

相关推荐

  • JavaScrpit中异步请求Ajax实现,多个Ajax请求数据交互

      在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面。   一般来说,使用Jquery中的ReferenceError: katex is not defined.post,$.getJSON,非常方便,但是有的时候,我们只需要ajax功能,这样引入Jquery比较不划算。   所以接下来便用原生JavaScrpit实现一个简单的Ajax请求,并说明ajax请求中的跨域访问问题,以及多个ajax请求的数......

    2017-07-19
    9500
  • PHP防止短时间内刷阅读量的方法

      防止短时间内刷阅读量是一个常见的需求,通常需要使用一些技术手段来检测和限制恶意访问。以下是一些可能的方法:   使用 Cookie 或 Session:   通过在用户访问时设置一个 Cookie 或 Session 记录,记录用户最后一次访问的时间戳。在下一次访问时,可以检查当前时间与上次访问的时间戳之间的差异,如果差异太小,则可能是刷阅读量的行为。 session_start(); $currentTime = time();......

    2021-05-06
    13720
  • PHP类的自动加载机制实现方法

      PHP的自动加载机制允许你在需要时自动加载所需的类文件,而无需手动包含或引入每个文件。PHP提供了 spl_autoload_register() 函数来实现自动加载机制。   以下是实现PHP类自动加载机制的步骤: &lt;?php // 自定义的自动加载函数 function my_autoloader($class) { include 'classes/' . $class . '.class.php'; } //......

    2019-03-14
    19060
  • 再谈PHP错误与异常处理

      请一定要注意,没有特殊说明:本例 PHP Version &lt; 7   说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程序,内容如下,然后命令行执行:php test.php &lt;?php $num = 0; try { echo 1/$num; } catch (Exception $e){ ......

    2017-06-12
    13780
  • 窃格瓦拉逆袭:周立齐的经历引发社会对价值观的思考

      周立齐,这个曾经因偷窃电动车电瓶而闻名一时的人,如今已成为互联网上的网红。他曾因为偷窃行为被网民称为&ldquo;窃格瓦拉&rdquo;。但是,这个曾经的罪犯在出狱后走上了创业的道路,甚至成为了一名企业家。   周立齐曾经因为多次盗窃电动车电瓶而被判刑。在狱中,他因为一句&ldquo;打工是不可能打工的,这辈子不可能打工。&rdquo;而走红,这句话甚至被做成了表情包,在网络上广为流传。出狱后,他并没有停下脚步,而是利用这波流量积......

    2023-03-27
    6340
  • 远离谎话连篇三观不正的人

      人一辈子很短,应该活得光明磊落,问心无愧,才能对得起自己,让人生有价值有意义。做个坦坦荡荡堂堂正正的人是一辈子,做个谎话连篇自欺欺人的嘴炮也是一辈子。可偏偏就有这种人,不去付出行动创造幸福,反而把时间和精力都用在弄虚作假上,整天吹牛逼编故事表演给人看,三吹六哨,撒谎成性。一张破嘴吹天吹地撒谎尿屁的信口开河,嘴里没一句真话。天天活在谎言里,连一个真实的自己都不敢做,虚伪做作,三观不正。一边抱怨又一边虚度时光,诋毁别人的成就和拥有,把责......

    2023-01-19
    8574
  • 织梦DedeCMS收费5800元,大批建站公司将受影响

      9月26日,一则消息在网站建站行业炸开锅:国内知名开源建站程序织梦内容管理系统(DedeCMS)官方宣布,使用其旗下产品DedeCMS的除个人非盈利用户外,全部需要购买商业授权。也就是说织梦要强制收费了。   作为国内最早也是使用率最高的CMS之一,DedeCMS是许多站长入行之初的启蒙者,在那个个人站长的红利期,很多站长最初都是选择了织梦作为自己网站的程序。这是因为DedeCMS简单易用,功能强大,并且开源免费,一度占有非常......

    2021-09-27
    16474
  • 科比·布莱恩特:不朽传奇的突然离去

      科比&middot;布莱恩特,这个名字是篮球运动中最令人敬仰的名字之一。他在NBA的职业生涯中,用他的技艺和精神,为篮球世界打造了一座坚不可摧的丰碑。然而,在2020年1月26日,这个曾经充满活力和激情的传奇人物,在一次悲剧性的直升机坠毁事件中永远地离开了世界,他与女儿乘坐的私人直升机在加利福尼亚州卡拉巴萨斯市坠毁,两人均不幸遇难。   科比的一生充满了荣誉和成就。他在1996年以高中生的身份加入NBA,并立刻展现出了超乎常人的天......

    2020-01-27
    18060