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