Сохранить все изображения со страницы сайта

Скрипт парсит все изображения из тега <img> со страницы сайта, сохраняя структуру директорий и имена файлов.

// URL с которого нужно скачать изображения.
$url = 'http://www.yaplakal.com/forum2/topic1514370.html';

// Директория куда будут сохранятся изображения.
$path = dirname(__FILE__) . '/download';

// Загружать или нет изображения с других доменов.
$external = true;

$html = file_get_contents($url);
preg_match_all('/<img.*?src=["\'](.*?)["\'].*?>/i', $html, $images, PREG_SET_ORDER);

$url = parse_url($url);
$path = rtrim($path, '/');

foreach ($images as $image) {
	if (strpos($image[1], 'data:image/') !== false) {
		continue;
	}

	if (substr($image[1], 0, 2) == '//') {
		$image[1] = 'http:' . $image[1];
	}

	$ext = strtolower(substr(strrchr($image[1], '.'), 1));
	if (in_array($ext, array('jpg', 'jpeg', 'png', 'gif'))) {
		$img = parse_url($image[1]);

		$path_img = $path . '/' .  dirname($img['path']);
		if (!is_dir($path_img)) {
			mkdir($path_img, 0777, true);
		}

		if (empty($img['host']) && !empty($img['path'])) {
			copy($url['scheme'] . '://' . $url['host'] . $img['path'], $path . $img['path']);
		} elseif ($external || ($external == false && $img['host'] == $url['host'])) {
			copy($image[1], $path . $img['path']);
		}
	}
}
PHP
23.12.2016, обновлено 01.10.2019 2375

Поделится

Другие публикации

В статье описана регистрация клиента, получения access token, примеры использования методов API Instagram на PHP.
14.03.2017 9829
PHP функции для перевода текста, ЧПУ, ссылок и имен файлов в транслит.
24.03.2019 1232
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
17.11.2018 8185
Описание значений глобального массива $_SERVER с примерами.
03.10.2018 1177
Несколько примеров как в PHP получить информацию о домене и IP-адресе.
10.04.2019 658
Для начала вы должны быть авторизированы в VK и являться администратором группы или страницы. Далее нужно создать...
16.11.2016 7954