preg替换图像的宽度,高度和样式

时间:2015-01-13 14:44:42

标签: php preg-replace preg-replace-callback

我的图片如下:

<img alt="" width="146" height="109" src="http://url.to/src.jpg" style="float:left" />

但是我无法弄清楚如何将preg_replace或preg_replace_callback带到这个:

<img alt="" src="http://url.to/src.jpg" style="width:146;height:109;float:left">

这适用于高度和宽度,但我无法获得样式元素&#34; float:left&#34;加入

$html='<img alt="" width="146" height="109" src="http://url.to/src.jpg" style="float:left" />';
$pattern = ('/<img[^>]*width="(\d+)"\s+height="(\d+)">/');
preg_match($pattern, $html, $matches);
$style = "<img style=\"width:".$matches[1]."px; height:".$matches[2]."px;\"";
$html = preg_replace($pattern, $style, $html);

结果将是

<img  alt="" style="width:146;height:109" src="http://url.to/src.jpg" style="float:left">

由于双重样式元素

而无法正常工作

1 个答案:

答案 0 :(得分:0)

尝试以下正则表达式

<?php

$html='<img alt="" width="146" height="109" src="http://placehold.it/140x200" style="float:left" />';
$pattern = '/(<img.*)width="(\d+)" height="(\d+)"(.*style=")(.*)" \/(>)/';
$style = '$1$4width:$2px;height:$3px;$5';
$html = preg_replace($pattern, $style, $html);
echo $html; //view source of page to see the code change

?>

请注意使用括号'('')'来创建匹配的组,以后可以使用$ 1 $ 2等进行引用转到regex101.com并试用正则表达式。

以上代码将导致以下内容(除了最后一部分)无关紧要,但您可以进一步修改它。

<img alt="" src="http://placehold.it/140x200" style="width:146;height:109;float:left" />