Как я могу сопоставить все изображения, начиная с pics.domain.com
?соответствует всем фотографиям, начиная с pics.domain.com
, что я пытался
preg_match_all('/<img .*src=(pics.domain.com*)["|\']([^"|\']+)/i', $row['story'], $matches);
Как я могу сопоставить все изображения, начиная с pics.domain.com
?соответствует всем фотографиям, начиная с pics.domain.com
, что я пытался
preg_match_all('/<img .*src=(pics.domain.com*)["|\']([^"|\']+)/i', $row['story'], $matches);
Использовать DOMDocument
и просто перебирать каждую метку <img>
; затем использовать parse_url()
, чтобы найти хозяина каждого пути изображения:
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($row['story']);
libxml_clear_errors();
foreach ($doc->getElementsByTagName('img') as $img) {
if (parse_url($img->getAttribute('src'), PHP_URL_HOST) === 'pics.domain.com') {
echo "Yay, image found\n";
}
}
+1, на самом деле набрал то же самое на основе этого [ответа] (http://stackoverflow.com/questions/2120779/regex-php-isolate-src-attribute-from-img-tag), но вы избили меня к нему! – adeneo
Я использовал регулярные выражения в прошлом, он работает за пределами <img>
тегов, а также.
'@[\'"](https?://)?([^\.][^\'"]*?)(/)?([^\'"/]*?)\.(jpg|jpeg|png|gif|bmp)[\'"]@'
Более конкретная версия:
'@[\'"](https?://)?pics\.domain\.com[^\'"]*?\.(jpg|jpeg|png|gif|bmp)[\'"]@'
На английском языке:
[начать цитаты] (HTTP или HTTPS или ни) pics.domain.com (все, что не цитата) (некоторое расширение изображения) [конец цитаты]
За время Zillion, пожалуйста, используйте HTML-парсер работать на HTML. Используйте DOMDocument для выбора тегов 'img', а затем используйте regex для проверки атрибута' src'. – nhahtdh
@nhahtdh - похоже, что он исходит из БД, но все-таки хороший момент. – adeneo