我有一个博客系统,用户在其中输入文章内容中的图像url,如
hey how are you <img src="example.com/image.png" style="width: 952px;">
如果用户像这样写
hello how are you <img src="example.com/image.png" style="width: 952px;">
然后我想找到这条style
width
952px
线,并将其替换为100%
用户可以输入任何尺寸的图像,如100px 300px这是我尝试过的:
$content是用户发布的内容
$go = $content;
$mystr= $go;
$start=strpos($mystr,'style="width: ');
$end=strpos($mystr,'">');
$jo = substr($mystr,0,$start+strlen('') ) . 'style="width: 100%;' .
substr($mystr,$end);
我面临的问题是,如果用户放置两个或三个图像标签,但这个脚本只替换一个宽度值,如何替换多个宽度的
用户输入->
<img src="example.com/img.png" style="width: 500px;"><br><img
src="example.com/img2.png" style="width: 952px;">
这是我得到的结果
<img src="example.com/img.png" style="width: 100%;"><br><img
src="example.com/img2.png" style="width: 952px;">
第二个图像没有改变宽度的值
使用preg_replace
函数:
$go = preg_replace('/style="width:'s*'d+px;/i', 'style="width:100%;', $content);
这是假设$content只有您的<img>
标记,否则您可能会弄乱其他html元素。
这种情况非常适合正则表达式搜索和替换。在PHP中,您可以使用preg_replace,您可以在此处找到相关文档:-http://php.net/manual/en/function.preg-replace.php
只需使用带有preg_replace()
的正则表达式来替换每个img标记中的宽度,例如
echo preg_replace("/<img.*?'Kwidth:'s*[^;]*/s", "width:100%", $input);
简单地说,我们首先匹配所有内容,直到img标记(<img.*?
)中的width属性,然后用'K
重置匹配,这样我们就可以匹配width属性(width:'s*[^;]*/
)并用width:100%
替换它。