@newked

Как на PHP проверить наличие атрибута у тега?

Ребят, всем привет. Есть вопросик, не могу найти ответ.
В общем .... сейчас гугл рекомендует владельцам сайтов сделать AMP версии страниц для более лучшего ранжирования в поисковой системе с мобильных устройств. Эту задачку я и пытаюсь победить и попутно сталкиваюсь с проблемками.
У нас есть сайт новостной. Там в базе данных у каждой новости есть поле "полный текст новости". В этом поле содержится HTML верстка текста новости. В верстке могут встречаться и iframe и img и audio .... в общем много разных тегов. Но столкнулся я с проблемкой у именно у IMG:

в верстке некоторых новостей встречаются такие кусочки верстки:

<p><img src="site.ru/kartina1.jpg" width="100"></p>
<p><img src="site.ru/kartina2.jpg" width="100"></p>
<p><img src="site.ru/kartina3.jpg" width="100"></p>
<p><img src="site.ru/kartina4.jpg" width="100"></p>
<p><img src="site.ru/kartina5.jpg" width="100"></p>
<p><img src="site.ru/kartina6.jpg" width="100"></p>


Не сложно заметить отсутствие height у тегов img.

Корректная верстка amp версии каждой img должен выглядеть вот так:
<amp-img layout="responsive"
  alt="A view of the sea"
  src="site.ru/kartina1.jpg"
  width="900"
  height="675">
</amp-img>


У меня есть код PHP который немного не справляется со своей задачей:

$article = str_replace('<img', '<amp-img layout="responsive"', $article);
$article = str_replace('</img>', '</amp-img>', $article);


он просто находит "" и меняет их вроде как на правильную конструкцию. И все бы ничего, но в своей базе данных я обнаружил новости у который в html верстке полного текста встречаются img у которых атрибут height не задан. И вот тут мой код не справляется.
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 1
f3d0t
@f3d0t
Добрый. Все что нужно, дописать атрибут height, если в представленной строке нету такого слова
if(strpos($article , "height") !== false){
  $article = str_replace('<img', '<amp-img layout="responsive"', $article);
} else{
  $article = str_replace('<img', '<amp-img layout="responsive" height="675"', $article);
}
$article = str_replace('</img>', '</amp-img>', $article);


Только в данном случае нужно, чтобы замена происходила по очереди, то есть $article должен содержать один элемент img
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы