首页> 实战笔录 >PHP开发笔记 >PHP PHP
PHP分别替换内容中的img标签src的值
作者:小萝卜 2019-11-20 【 PHP 】 浏览 1440
简介最近弄了个小的采集功能,然后遇到了这个问题。需求是这样子,当我采集到内容主题后我需要把内容里面的图片下载到本地,问题点怎么内容中的图片依次替换成我本地的图片路径了?
PHP分别替换内容中的img标签src的值
最近弄了个小的采集功能,然后遇到了这个问题。
需求是这样子,当我采集到内容主题后我需要把内容里面的图片下载到本地,问题点怎么内容中的图片依次替换成我本地的图片路径了?
我是这么操作的,先把图片下载到本地:
$arr = array();
//循环下载图片
for ($k=0; $k <count($photo) ; $k++) {
$url = $photo[$k]['src'];
if($url!=''){
//$url = str_replace('//', 'https://', $url);
$res = getImage($url,ROOT_PATH.'uploads'.DS.'gather'.DS.$pid,'',0); //下载图片
if($res['error']==0){
$arr[$k] = '/uploads/gather/'.$pid.'/'.$res['file_name'];
}else{
$arr[$k] = $url;
}
}
}
然后通过php的内置函数preg_replace_callback去依次替换内容中的图片地址:
if(!empty($arr)){
for ($i=0; $i < count($arr) ; $i++) {
//循环替换图片
$newContent = preg_replace_callback(
'#<img(.+?)src="([^"]+?)"([^>]*?)>#',
function($m) use($i,$arr){
if($arr[$i]){
//替换图片
return "<img src=\"$arr[$i]\">";
}else{
//没下载到图片 不替换
return "<img src=\"$m[2]\">";
}
},
$zdata['bodys'] //这个是内容主体
);
}
$newContent就是替换后的内容主体了,大家可以打印看下。
官方手册:http://php.net/manual/zh/function.preg-replace-callback.php
很赞哦! (0)