Справочники, инструменты, документация

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

Скрипт парсит все изображения из тега <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]);

        // Если файл уже существует
        if (is_file($path . $img['path'])) {
            continue;
        }

        $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']);
        }
    }
}