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


Posted in PHP onSeptember 29, 2015

使用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正则匹配文章中的远程图片地址并下载图片至本地的实现技巧,希望对大家的学习有所帮助。

PHP 相关文章推荐
php自动获取字符串编码函数mb_detect_encoding
May 31 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
php导出word格式数据的代码实例
Nov 25 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php内嵌函数用法实例
Mar 20 PHP
php自定义错误处理用法实例
Mar 20 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP常见数组排序方法小结
Aug 20 PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
php提高网站效率的技巧
Sep 29 #PHP
四个PHP非常实用的功能
Sep 29 #PHP
You might like
PHP生成UTF8文件的方法
2010/05/15 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Python获取当前时间的方法
2014/01/14 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Python 如何查找特定类型文件
2020/08/17 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
Java如何支持I18N?
2016/10/31 面试题
自荐信的两点禁忌
2013/10/30 职场文书
高级方案规划工程师岗位职责
2013/11/29 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
个人实习生的自我评价
2014/02/16 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
学生会干部任命书
2015/09/21 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
Python绘制散乱的点构成的图的方法
2022/04/21 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers