我有一个这样的字符串:
<p>This is a paragraph with an image <img src='/url-to-img.jpg' style='height:100px;width:30px;float:right;'></p>
<p>This is another paragraph with an image <img src='/url-to-img.jpg' style='margin:10px;height:100px;width:30px;float:left;'></p>
这个字符串来自数据库,不幸的是编辑器会添加这样的图像。
现在我想用PHP自动编辑它:
<p>This is a paragraph with an image <img src='/url-to-img.jpg' style='height:100px;width:30px;float:right;' height=100 width=30 align='right'></p>
<p>This is another paragraph with an image <img src='/url-to-img.jpg' style='margin:10px;height:100px;width:30px;float:left;' height=100 width=30 align='left'></p>
我想从样式中获取高度和宽度,并将它们添加到img标记中。
这可能吗?
(这样我的图片就会显示替代文字,而不是像Outlook中的小方块。我希望它显示为完整图片)
答案 0 :(得分:4)
您可以使用preg_match_all从样式中获取宽度和高度,然后使用php str_replace添加这些属性。与宽度高度匹配的正则表达式如下所示:height:(.*?);width:(.*?);
$text = "<p>This is a paragraph with an image <img src='/url-to-img.jpg' style='height:100px;width:30px;float:right;'></p>
<p>This is another paragraph with an image <img src='/url-to-img.jpg' style='margin:10px;height:100px;width:30px;float:left;'></p>";
preg_match_all("/<img.*>/",$text,$out);
foreach($out as $t1)
{
foreach($t1 as $img)
{
preg_match("/.*height:(.*?);width:(.*?);.*/",$img,$out2);
$height = $out2[1];
$width = $out2[2];
$text = str_replace($out2[0],str_replace("<img","<img width='" . $width . "' height='" . $height . "'",$out2[0]),$text);
}
}
echo $text;