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面向对象
Feb 22 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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设计聊天室步步通
2006/10/09 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
浅谈django orm 优化
2018/08/18 Python
详解python配置虚拟环境
2019/04/08 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
面试后感谢信
2014/02/01 职场文书
运动会通讯稿500字
2014/02/20 职场文书
婚礼主持词
2014/03/13 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
2015国庆节感想
2015/08/04 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
python 单机五子棋对战游戏
2022/04/28 Python
Python PIL按比例裁剪图片
2022/05/11 Python