我有一个博客系统,用户在帖子内容中输入图片网址,如
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);
我面临的问题是,如果用户放置两个或三个图像标签,但此脚本仅替换一个宽度值,如何替换多个宽度
用户输入 - &gt;
<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;">
第二张图片没有改变宽度值
答案 0 :(得分:0)
此案例非常适合正则表达式搜索和替换。 在PHP中,您可以使用 preg_replace ,您可以在此处找到文档: - http://php.net/manual/en/function.preg-replace.php
答案 1 :(得分:0)
使用preg_replace
功能:
$go = preg_replace('/style="width:\s*\d+px;/i', 'style="width:100%;', $content);
假设$ content只包含您的<img>
标记,否则您可能会搞乱其他html元素。
答案 2 :(得分:0)
只需使用带preg_replace()
的正则表达式替换每个img标记中的宽度,例如
echo preg_replace("/<img.*?\Kwidth:\s*[^;]*/s", "width:100%", $input);
我们首先匹配所有内容,直到img标记(<img.*?
)中的width属性,然后将匹配项重置为\K
,以便我们可以匹配width属性(width:\s*[^;]*/
)并将其替换为width:100%
。