Получить изображения с URL-адреса и получить их все, чтобы выбрать тот, который является самым большим - PullRequest
0 голосов
/ 20 марта 2010

Я хочу открыть URL-адрес и RegEx все URL-адреса изображения со страницы. Затем я хочу обернуть их всех и проверить, какой у них размер. В конце я хочу получить самый большой. Как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 20 марта 2010

Вы можете начать с получения URL с помощью curl, сохранив его в переменной.
Тогда вы можете применить регулярное выражение, как этот: <img.*?src=['"](.*?)['"]>

Проверьте, начинается ли источник с http или является относительной ссылкой, если это относительная ссылка, вы можете добавить URL-адрес страницы.

Окончательно получите размер изображений с помощью getimagesize () http://php.net/manual/en/function.getimagesize.php

1 голос
/ 22 марта 2010

Используйте php DOM , чтобы найти изображения.

Я вообще не тестировал этот код, но он должен направить вас в правильном направлении.

$urls = array();
$dom = DOMDocument::loadHTML(YOUR_HTML);
$imgList = $dom->getElementsByTagName('img');
$imgCount = $imgList->length;
for ($i = 0; $i < $imgCount; $i++) {
    $imgElement = $imgList->item($i);
    if ($imgElement->hasAttribute('src')) {
        $urls[] = $imgElement->getAttribute('src');
    }
}

Если вы хотите получить связанные изображения, вы можете изменить «img» / «src» на «a» / «href». Но вам нужно будет найти способ отфильтровать список, чтобы получить только изображения.

Вы не сказали, каковы ваши критерии размера изображения, поэтому я не могу вам помочь. Хотите максимальный размер файла или разрешение?

0 голосов
/ 22 марта 2010

Это может быть уже очевидно, используйте синтаксический анализатор DOM, а не регулярное выражение. Просто получите все элементы по имени тега <img>, а затем получите для каждого URL-адрес из его атрибута src. Чтобы определить размер изображения без загрузки всего изображения, вам, вероятно, следует вместо этого запустить запрос HTTP HEAD и затем определить заголовок Content-Length в полученном ответе. http_head() может быть полезным в этом.

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