通过属性转换将HTML5 img转换为AMP amp-img

时间:2018-04-19 10:22:23

标签: php regex amp-html

我需要像这样转换img:

<img src="https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg" style="height:404px; width:602px" />

到此:

<amp-img src="https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg" height="404" width="602"></amp-img>

请记住,此代码将包含更多html标记的代码部分,重要的是,我不能使用任何库或任何内容。

我等待答案,提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码实现目标:

function html5toampImage($string) {

preg_match('/src="(.+?)"/', $string, $src);
$srcAttribute = $src[0];

preg_match('/style="(.+?)"/', $string, $styles);
$style = $styles[1];

$allData = explode(";",$style);

foreach($allData as $data) {
    if($data) {
        list($key,$value) = explode(":",$data);
        if(trim($key)=="height") {
        $heightAttribute =  trim($key).'="'.trim(str_replace("px","",$value)).'"'; 
        }
    if(trim($key)=="width") {
        $widthAttribute =  trim($key).'="'.trim(str_replace("px","",$value)).'"';
        }       
    }
}

$ampImageTag = '<amp-img '.$srcAttribute.' '.$heightAttribute.' '.$widthAttribute.' layout="responsive"></amp-img>';

return $ampImageTag;
} 

$html5Tag = '<img alt="aa" src="https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg" style="height:404px; width:602px; color:red" />';


echo htmlentities(html5toampImage($html5Tag));

Here is working eval url