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+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
php学习 字符串课件
Jun 15 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP共享内存使用与信号控制实例分析
May 09 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程序员基本要求和必备技能
2014/05/09 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
Convert Seconds To Hours
2007/06/16 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python实现类继承实例
2014/07/04 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python反转序列的方法实例分析
2018/03/21 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
Python List cmp()知识点总结
2019/02/18 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Python自省及反射原理实例详解
2020/07/06 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
酒店前台岗位职责
2015/04/16 职场文书
小学班主任教育随笔
2015/08/15 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
python周期任务调度工具Schedule使用详解
2021/11/23 Python
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏
sql注入报错之注入原理实例解析
2022/06/10 MySQL
利用Python实时获取steam特惠游戏数据
2022/06/25 Python