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 获取mysql数据库信息代码
Mar 12 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 PHP
php弹出提示框的是实例写法
Sep 26 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代码实现爬虫记录――超管用
2015/07/31 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
详解Python3中yield生成器的用法
2015/08/20 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
python开根号实例讲解
2020/08/30 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
DTD的含义以及作用
2014/01/26 面试题
拾金不昧的表扬信
2014/01/16 职场文书
大学三年计划书范文
2014/04/30 职场文书
大学辅导员述职报告
2015/01/10 职场文书
物流业务员岗位职责
2015/04/03 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
element多个表单校验的实现
2021/05/27 Javascript