求替换全局img图片的正则表达式
如题
现在有一字符串是
$content = ‘
test
‘;
想要将这字符里面的 images/tmp 都替换成 images/pub
本人已经写了一个函数
<br /><br /> public static function replace_img_publish_path($content){<br /> $pattern='/()/';<br /> $replacement="\${1}images/pub/\${3}";<br /> print preg_replace($pattern, $replacement, $content);<br /> exit;<br /> }<br /><br />
输出结果为
test
只替换了最后一个img标签
如何才能全部都替换?
——解决方案——————–
$content = '<p>test</p>';<br /><br />$content = preg_replace('#(?<=src="http://localhost:8080/story/images/)tmp/#', 'pub/', $content);<br />echo $content;
pub/1403530150545.jpg” style=”width: 268px;”>pub/1403530147265.jpg” style=”width: 268px;”>test
——解决方案——————–
你没有防止贪婪匹配。
$pattern=’/(<[img
——解决方案——————–
IMG].+?src=\”?.+?)(images\/tmp\/)(.+?\.(jpg
——解决方案——————–
gif
——解决方案——————–
bmp
——解决方案——————–
bnp
——解决方案——————–
png)\”?.+?>)/’;
——解决方案——————–
你写的方法加一个参数U就可以了。
加上U,将懒惰匹配 变成 贪婪匹配。
$pattern=’/(<[img
——解决方案——————–
IMG].+src=\”?.+)(images\/tmp\/)(.+\.(jpg
——解决方案——————–
gif
——解决方案——————–
bmp
——解决方案——————–
bnp
——解决方案——————–
png)\”?.+>)/U‘;
测试例子:
<br />$content = '<p>test</p>';<br /><br />replace_img_publish_path($content);<br /><br />function replace_img_publish_path($content){<br /> $pattern='/(<[img<br><font color='#FF8000'>------解决方案--------------------</font><br>IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg<br><font color='#FF8000'>------解决方案--------------------</font><br>gif<br><font color='#FF8000'>------解决方案--------------------</font><br>bmp<br><font color='#FF8000'>------解决方案--------------------</font><br>bnp<br><font color='#FF8000'>---<mark>(本文来)源gaodaimacom搞#^代%!码&网(</mark><pre>搞gaodaima代码
—解决方案——————–
png)\”?.+>)/U’;
$replacement=”\${1}images/pub/\${3}”;
print preg_replace($pattern, $replacement, $content);
exit;
}
替换后:
test