以字符串形式添加图像宽度和高度

时间:2014-04-15 14:33:05

标签: php html-parsing

我有一个这样的字符串:

<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中的小方块。我希望它显示为完整图片)

1 个答案:

答案 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;