如何使用<amp-img>标记替换HTML中的<img/>标记?

时间:2017-08-10 14:53:53

标签: php google-amp

我想将HTML页面转换为Google AMP页面,我遇到了这个问题,我有很多<img>我希望转换为<amp-img>标记。

例如,我想转:

<img src='apa.png'><br>
hi bro <img src="c.png'>

这样的事情:

<amp-img src="apa.png" width="800" height="684" layout="responsive" alt="AMP"></amp-img><br/>
hi bro <amp-img src="c.png" width="800" height="684" layout="responsive" alt="AMP"></amp-img>

我试图用PHP替换这些标签,但它没有用。

4 个答案:

答案 0 :(得分:3)

您可以使用preg_replace用字符串(http://php.net/manual/en/function.preg-replace.php)替换模式。

试试这段代码:

echo htmlentities(preg_replace(
    '/<img src="([^"]*)"\s*\/?>/', 
    '<amp-img src="$1" width="800" height="684" layout="responsive" alt="AMP"></amp-img>', 
    '<img src="apa.png"><br>hi bro <img src="c.png">'
));

答案 1 :(得分:2)

我当时只是需要在一个meta字段(一个WordPress自定义WYSIWYG字段)中更改所有图像标签的情况,我认为这可能会对其他人有所帮助。这段代码基本上是此处发布的一些响应的组合,略有修改,因为<img>标签在src之前包含了额外的信息:

   echo preg_replace(
        '/<img .*? src="([^"]*)" .*?>/', 
        '<amp-img src="$1" width="600" height="600" layout="intrinsic" alt="AMP"></amp-img>', 
        $meta_field_output
    );

答案 2 :(得分:0)

如果HTML文件中存在此HTML,那么您需要做的就是使用<img src=进行搜索替换<amp-img width="800" height="684" layout="responsive" alt="AMP" src=

如果您的编辑器能够使用常规rexpression查找和替换,请在FIND上使用以下正则表达式:

 <img src=("|')(.*)'>

并关注REPLACE

<amp-img src="$2" width="800" height="684" layout="responsive" alt="AMP"</amp-img>

我和Dreamwearver一起尝试过,它对我有用。

答案 3 :(得分:-1)

经过一段时间的正则表达式测试,我找到了满足我需求的解决方案,

return preg_replace_callback('/<img[\s*]alt="([^"]*)"[\s*]src="([^"]*)"([\s*]?)((.*?)+?)>/',
function ($found) {
    $size = (getimagesize($found[2]));

    return '<amp-img src="' . $found[2] . '" width="'. $size[0] .'" height="' . $size[1] . '" layout="responsive" alt="' . $found[1] .'"></amp-img>';
}, $html);