Как заменить теги <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);