我的图片如下:
<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">
由于双重样式元素
而无法正常工作答案 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" />