php正则匹配文章中的远程图片地址并下载图片至本地(附代码)

代码如下:
这篇文章主要介绍了php正则匹配文章中的远程图片地址并下载图片至本地的实现技巧,可实现采集并保存远程图片的功能,是非常实用的技巧,感兴趣的小伙伴可以参考一下使用php的正则表达式来实现:

<?php
$content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">';
$content = stripslashes ( $content );
$img_array = array ();
// 匹配所有远程图片
preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU", $content, $img_array );
// 匹配出来的不重复图片
$img_array = array_unique ( $img_array [2] );
print_r($img_array);

上面就将远程图片给匹配出来了,我们需要将其保持到本地。这里需要注意两点:
1.图片保存路径(图片存储目录)
2.实际访问图片地址
下面是完整实例:(你可以保存到本地服务器修改相应地方进行测试)

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>php保存远程图片到本地,php正则匹配文章中的图片地址</title>
</head>
<body>
<?php
//保存文章中远程图片到本地
//作者:yanue;
// 文件保存目录路径(请更换为你自己的路径, 你可以echo一下)
$save_path = $_SERVER ['DOCUMENT_ROOT'] . 'swfupload/attached/';
// 文件保存目录URL
$save_url = '/swfupload/attached/';
$save_path = realpath ( $save_path ) . '/';
// 图片存储目录
$imgPath = $save_path . date ( "Ymd" );
$imgUrl = $save_url . date ( "Ymd" );
// 创建文件夹
if (! is_dir ( $imgPath )) {
 @mkdir ( $imgPath, 0777 );
}
$content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">';
$content = stripslashes ( $content );
$img_array = array ();
// 匹配所有远程图片
preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU", $content, $img_array );
// 匹配出来的不重复图片
$img_array = array_unique ( $img_array [2] );
print_r($img_array);
// 时间无限制
set_time_limit ( 0 );
foreach ( $img_array as $key => $value ) {
 $value = trim ( $value );
 // 读取远程图片
 $get_file = @file_get_contents ( $value );
 // 保存到本地图片名称
 $imgname = date ( "YmdHis" ) . '_' . rand ( 10000, 99999 ) . "." . substr ( $value, - 3, 3 );
 // 保存到本地的实际文件地址(包含路径和名称)
 $fileName = $imgPath . '/' . $imgname;
 // 实际访问的地址
 $fileurl = $imgUrl . "/" . $imgname;
 // 文件写入
 if ($get_file) {
 $fp = @fopen ( $fileName, "w" );
 @fwrite ( $fp, $get_file );
 @fclose ( $fp );
 }
 // 替换原来的图片地址
 $content = ereg_replace ( $value, $fileurl, $content );
}
echo $content;
?>
</body>
</html>

以上就是php正则匹配文章中的远程图片地址并下载图片至本地的实现技巧,希望对大家的学习有所帮助。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/2553.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2017年9月30日 09:35
下一篇 2017年10月2日 09:50

相关推荐

  • PHP实现Redis数据库分片的方法。

    Redis是一款高性能的NoSQL数据库,而分片是一种常用的数据分布式处理方法,可以提高数据库的性能和扩展性。本文将介绍如何使用PHP实现Redis数据库分片。Redis分片概述Redis分片是将一个大的Redis数据库拆分成多个较…

    2023年5月21日
    06
  • PHPCrawl爬虫库实现抓取酷狗歌单的方法示例

    看了网络爬虫相关的视频后,手痒痒,想爬点什么。最近Facebook上表情包大战很激烈,就想着把所有表情包都爬下来,却一时没有找到合适的VPN,因此把酷狗最近一月精选歌曲和简单介绍抓取到本地。代码写得有点乱,自己…

    2018年4月25日
    0198
  • 如何在PHP商城开发中增强数据安全性

    随着电商市场的不断发展,越来越多的企业开始使用PHP开发电商平台,并将其作为开发工具。但是,由于缺少对数据安全的有效注意,许多商家经常面临数据泄漏和网站遭受黑客攻击等问题。因此,保障电商平台的数据安全性…

    2023年5月18日
    06
  • 使用PHP8中的str_starts_with()函数判断字符串开头的方法。

    随着PHP语言版本的不断更新,为程序员提供了越来越多便利的函数和方法。其中,PHP8版本增加了许多实用函数,例如str_starts_with()函数,可以方便地判断一个字符串是否以某个指定的子字符串开头。本文将介绍如何使…

    2023年5月21日
    010
  • PHP中如何进行卫星数据分析和处理。

    随着卫星技术的不断发展和普及,卫星数据成为了各领域研究和应用的重要数据源。PHP作为一种广泛应用于Web开发的脚本语言,也可以利用其强大的数据处理能力进行卫星数据分析和处理。本文主要从以下几个方面介绍PHP中…

    2023年5月23日
    010
  • PHP图像处理技术的图像处理基本介绍

    所谓的PHP图像处理技术,就是通过php的函数进行绘制图像,然后可以输出到浏览器,也可以保存到本地              该绘图技术,需要开启php的一个扩展:GD2,该扩展提供了很多绘制图像的方法        PHP的图像处理技…

    2018年9月1日
    0255
  • 用PHP的FFI调用cjieba

    phpjieba_ffi使用PHP 7.4的 FFI 测试直接调用cjieba分词的动态库选用CJieba的原因是FFI使用的是C的调用约定,如果用Cpp,还得自己包装一下,然后extern C,让编译器生成标准C的动态库。碰到的问题段错误C变量没有初…

    2022年6月23日
    0124
  • 如何使用PHP打造高品质的直播功能。

    随着现代化科技的不断发展,直播功能已经成为许多企业和个人应用中必不可少的一部分。为了提供高质量的直播功能,许多开发人员必须掌握各种技术和方法,其中PHP是一种非常流行的语言。在本文中,我们将向您介绍如何…

    2023年5月23日
    03

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息