получить все изображения абсолютного пути на странице? - PullRequest
0 голосов
/ 01 июня 2010

Я пытаюсь получить все изображения на странице. Но некоторые страницы используют абсолютные пути, а некоторые нет. Поэтому мне интересно, как лучше это сделать?

сейчас я использую это.

$imgsrc_regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im';

preg_match_all($imgsrc_regex, $html, $matches);

Например, веб-страница a может содержать изображения как src = "xyz.png", в то время как другие могут использовать src = "b.com/xyz.png", есть ли способ автоматически добавлять URL при необходимости?

Ответы [ 2 ]

3 голосов
/ 01 июня 2010

Лучшим способом (imo) было бы использование DOMDocument и DOMXPath для получения URL-адресов:

$dom=new domDocument;
$dom->loadHTML($html);

и

$xpath = new DOMXPath($dom);
$result = $xpath->query("//img/@src");

Использование регулярных выражений для разбора HTML - это плохо.

Или вы должны уточнить свой вопрос, что вы действительно хотите.Вы хотите получить только URL-адреса изображений, которые являются абсолютными?Если это так, вы можете проверить, начинаются ли они с http::

$result = $xpath->query("//img[starts-with(@src, 'http:') or starts-with(@src, 'HTTP:')]/@src");
0 голосов
/ 01 июня 2010

Используйте анализатор HTML, а не регулярное выражение

Серьезно, поиск тегов в HTML - это неправильная проблемная область для регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...