插入数据库时替换图像的宽度


replace width of image while inserting into db

我有一个博客系统,用户在其中输入文章内容中的图像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%替换它。