如何在getimagesize中preg_filter

时间:2016-12-23 19:49:36

标签: php

我想post_content所有img标签添加高度大小。

我不能preg_match_all。因为img标签数组是NO。

preg_filter - 执行正则表达式搜索并替换。

getimagesize(IMGURL)[1]是身高尺寸像素。

$2是img标记src网址。蝙蝠字符串不在$2

preg_filter('/<img(.+?)src="(.+?)"(.+?)>/i',
            "<img$1src=\"$2\"$3 height=\"".getimagesize("{$2}")[1]."\">",
            $row['post_content']);

// <img src="/abc/a.jpg" height="">


preg_filter('/<img(.+?)src="(.+?)"(.+?)>/i',
            "<img$1src=\"$2\"$3 height=\"".getimagesize(."{$2}".)[1]."\">",
            $row['post_content']);

// PHP Parse error:  syntax error, unexpected '.' in /var/www/a/a.php line 22

$row['post_content']

"<p>Hello my name is.</p>
<img src="sadsafdsd.jpg" alt><br>
<img src="sadsafdsfd.jpg" alt><br>
<img src="sadsgtjhsad.jpg" alt><br>
<img src="hgtsadsad.jpg" alt><br>
<img src="sadshtread.jpg" width="400" alt><br>
<img src="sadretsad.jpg" alt><br>"

1 个答案:

答案 0 :(得分:1)

您可以使用preg_replace_callback()代替。

function setheight($matches){
    $img_prop = getimagesize($matches[2]);
    return '<img' . $matches[1] . 'src="'.$matches[2].'" '. $matches[3] . ' height="'.$img_prop[2].'">';
}

preg_replace_callback(
            "/<img(.+?)src=\"(.+?)\"(.+?)>/i",
            "setheight",
            $row['post_content']);