Получаем SRC (и не только) картинок из текста с preg_match_all
Иногда бывает надо получить урлы (и не только) всех картинок в тексте (html) с какой-нибудь целью, например заменить их все на превью.
Для этого замечательно подойдёт preg_match_all, поскольку в данном случае мне надо было не только получить сами src, но и остальные атрибуты тега, чтобы заменить картинки в тексте обёртками.
$images = array(); if (preg_match_all('~<img[^>]+>~is', $html, $matches)) { foreach($matches[0] as $tag) { $image = array(); if (preg_match_all('~(?:(src|width|height|title|alt)\s*=\s*([\'"])\s*([^\'"]*)\s*[\'"])~i', $tag, $tag_matches, PREG_SET_ORDER)) { foreach($tag_matches as $attr) $image[strtolower($attr[1])] = $attr[3]; $images[] = $image; } } } }
Только необходимо помнить, что это решение не “на лету”, поскольку regex очень сильно использует CPU.
Автор Sergey Tatarenkov в September 9, 2011 Опубликовано в рубрике PHP regex Памятка.
Комментарии