PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

求轮换全局img图片的正则表达式

原创
2016-06-13 12:00:43 649浏览

求替换全局img图片的正则表达式
如题
现在有一字符串是

$content = '

test

';

想要将这字符里面的 images/tmp 都替换成 images/pub

本人已经写了一个函数


public static function replace_img_publish_path($content){
$pattern='/()/';
$replacement="\${1}images/pub/\${3}";
print preg_replace($pattern, $replacement, $content);
exit;
}



输出结果为

test



只替换了最后一个img标签

如何才能全部都替换?
------解决方案--------------------
$content = '

test

';

$content = preg_replace('#(?echo $content;

pub/1403530150545.jpg" style="width: 268px;">pub/1403530147265.jpg" style="width: 268px;">test



------解决方案--------------------
你没有防止贪婪匹配。

$pattern='/(------解决方案--------------------
IMG].+?src=\"?.+?)(images\/tmp\/)(.+?\.(jpg
------解决方案--------------------
gif
------解决方案--------------------
bmp
------解决方案--------------------
bnp
------解决方案--------------------
png)\"?.+?>)/';
------解决方案--------------------
你写的方法加一个参数U就可以了。
加上U,将懒惰匹配 变成 贪婪匹配。

$pattern='/(------解决方案--------------------
IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg
------解决方案--------------------
gif
------解决方案--------------------
bmp
------解决方案--------------------
bnp
------解决方案--------------------
png)\"?.+>)/U';

测试例子:

$content = '

test

';

replace_img_publish_path($content);

function replace_img_publish_path($content){
$pattern='/(------解决方案--------------------
IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg
------解决方案--------------------
gif
------解决方案--------------------
bmp
------解决方案--------------------
bnp
------解决方案--------------------
png)\"?.+>)/U';
$replacement="\${1}images/pub/\${3}";
print preg_replace($pattern, $replacement, $content);
exit;
}


替换后:

test

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。