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

test
';
想要将这字符里面的 images/tmp 都替换成 images/pub
本人已经写了一个函数
1 | <br /><br /> public static function replace_img_publish_path( $content ){<br /> $pattern = '/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/' ;<br /> $replacement ="\${1}images/pub/\${3}";<br /> print preg_replace( $pattern , $replacement , $content );<br /> exit ;<br /> }<br /><br />
|
登录后复制
输出结果为

test
只替换了最后一个img标签
如何才能全部都替换?
------解决方案--------------------1 | $content = '<p><img src="/static/imghw/default1.png" data-src="http://localhost:8080/story/images/tmp/1403530150545.jpg" class="lazy" style="max-width:90%" alt="求轮换全局img图片的正则表达式" ><img src="/static/imghw/default1.png" data-src="http://localhost:8080/story/images/tmp/1403530147265.jpg" class="lazy" style="max-width:90%" alt="求轮换全局img图片的正则表达式" >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';
测试例子:
1 | <br /> $content = '<p><img src="/static/imghw/default1.png" data-src="http://localhost:8080/story/images/tmp/1403530150545.jpg" class="lazy" style="max-width:90%" alt="求轮换全局img图片的正则表达式" ><img src="/static/imghw/default1.png" data-src="http://localhost:8080/story/images/tmp/1403530147265.jpg" class="lazy" style="max-width:90%" alt="求轮换全局img图片的正则表达式" >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 '>------解决方案--------------------</font><br>png)\"?.+>)/U' ;<br /> $replacement ="\${1}images/pub/\${3}";<br /> print preg_replace( $pattern , $replacement , $content );<br /> exit ;<br />}<br />
|
登录后复制
替换后:

test