preg-replace ширина, высота и стиль изображения

Мое изображение выглядит так:

<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">

Это работает с высотой и шириной, но я не могу добавить элемент стиля «float: left»

$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

Решение

Попробуйте следующее регулярное выражение

<?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" />
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]