Как заменить теги <img> в HTML тегами <amp-img>?

Я хочу превратить 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 ответа

Решение

Вы можете использовать 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">'
));

Я просто попал в ситуацию, когда мне нужно изменить все теги изображения в одном метаполе (настраиваемое поле 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
    );

Если этот HTML-код присутствует в HTML-файле, все, что вам нужно сделать, это выполнить поиск-заменить <img src= с <amp-img width="800" height="684" layout="responsive" alt="AMP" src=

если у вас есть редактор, способный находить и заменять с помощью регулярных выражений, используйте следующее регулярное выражение для FIND:

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

и следуя по REPLACE:

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

Я попробовал это с Dreamwearver, и это сработало для меня.

Через некоторое время тестирования регулярных выражений я нашел решение, которое соответствует моим потребностям,

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);
Другие вопросы по тегам