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

相关推荐

  • PHP8中的函数:array_key_first()、array_key_last()及array_column()的高效操作方法。

    PHP8是PHP语言的最新版本,它引入了一些非常有用的新特性和函数。本文将介绍PHP8中的三个新函数:array_key_first()、array_key_last()和array_column(),并讨论它们的高效操作方法。array_key_first()array_key_fi…

    2023年5月21日
    02
  • PHP中 Exception异常处理

    异常(Exception)是用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。 PHP 5 中提供了一种新的面向对象的错误处理方法。 当异常被触发时,通常会发生: 当前代码状态被保存 代码执行被切…

    2018年3月13日
    0233
  • 一个查看xhprof数据文件的docker镜像

    xhprof这个工具是一个分析php执行的工具,具体使用方法这里不多说。对于xhprof生成的分析结果包往往需要搭配nginx+graphviz,还需要配置相关文件到指定路径下。但使用windows或者mac时往往不想因为只看一个报告而费…

    2022年6月25日
    0130
  • 数组转json后的结果是数组还是对象? (踩坑记录)

    最近工作中经常遇到这些问题,因此记录一下~问题:数组转json,有时是对象,有时是数组?情况一:$arr = [1,2,3];//数组下标从0开始的 echo json_encode($arr); //[1,2,3] $arr = [1=>1,2=>2,3=>3];//数组…

    2022年6月27日
    0143
  • PHP中的OOP编程实践。

    随着互联网的发展,PHP作为一种非常流行的服务器端编程语言,成为了很多Web开发人员的首选。随着技术的发展和语言本身的改进,越来越多的PHP开发者开始采用面向对象编程(OOP)的方式来进行开发。在本文中,我们将…

    2023年5月28日
    01
  • 记录一次PHP优化案例

    记一次PHP优化案例网站架构简介:现在很多的企业都是使用lnmp或者lamp来做企业的网站服务器架构,这两种网站的服务架构,我们都是比较熟悉的;基于nginx的性能优于Apache,现阶段的很多公司,都是逐渐把Apache替换…

    2022年6月27日
    098
  • PHP中的版本控制工具。

    PHP语言是现今全球使用最为广泛的后端编程语言之一,因其易学易用、开发效率高等特点深受广大开发者的喜爱和支持。随着时间的推移和PHP语言的不断发展壮大,其版本也在不停地迭代更新。为了更好地管理和维护各个版…

    2023年5月28日
    02
  • 使用PHP开发直播功能的最优解决方案。

    随着互联网的发展,直播功能已经成为了很多互联网公司必不可少的一项功能。对于开发者而言,如何高效和优雅地使用PHP语言开发直播功能显得尤为重要。下面我将基于我多年的实际开发经验,为大家分享一些使用PHP开发…

    2023年5月23日
    04

联系我们

QQ:951076433

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