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类
Jul 15 PHP
php抓即时股票信息
Oct 09 PHP
PHP5 安装方法
Jan 15 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
php 批量替换html标签的实例代码
Nov 26 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
php修改word的实例方法
Nov 17 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/11/25 PHP
隐性调用php程序的方法
2009/03/09 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
js汉字转拼音实现代码
2013/02/06 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
基于python编写的微博应用
2014/10/17 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python 如何停止一个死循环的线程
2020/11/24 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
学校安全工作制度
2014/01/19 职场文书
中学教师培训制度
2014/01/31 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis