Поиск и удаление определенных HTML тегов с помощью php?

Добрый день!

Помогите пожалуйста правильно решить следующую задачу:

Имеется парсер на php с simple html dom.
Имеется спарсенная часть основного контента, лежит в массиве $posts['content']

Задача:

В спрарсенной части $post['content'] среди прочего есть следующий html:

<img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20690%20808'%3E%3C/svg%3E" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px" data-lazy-src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg">
<img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px">


нужно найти и удалить тег вместе с содержимым содержащий <img *. src=data: .*>. В выше указанном примере - удалить первый img

Уточнения:

img может быть разное количество
img src=data: далее - динамический

Какой функцией PHP можно это сделать и как воспользоваться? Пробовал str_replace и preg_replace - не получается

Заранее благодарен!
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
artzolin
@artzolin
php, WordPress разработка сайтов artzolin.ru
С помощью Simple HTML Dom и делайте

$content = '<img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="data:image/svg+xml,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20690%20808\'%3E%3C/svg%3E" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px" data-lazy-src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg">
<img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px">';

$html = str_get_html( $content );
$images = $html->find( 'img' );

foreach ( $images as $key => $image ) {
	if ( stripos( $image->src, 'data:' ) !== false ) {
		$image->outertext = '';
	}
}

var_dump( $html->innertext );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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