Как извлечь изображения с сайта и загрузить их в локальный файл с помощью простой HTML-дом загрузить их из файла чтобы избежать загрузки изображений каждый раз с их оригинального веб-сайта.
include ('simple_html_dom.php');
$html = file_get_html('http://www.caradisiac.com/');
foreach( $html->find('.featured img') as $image ){
echo $image->src;
echo "<br>";
}
Помоги мне, пожалуйста!!
0 — обязательно прочитайте Руководство по PHP чтобы увидеть все удивительные встроенные функции PHP.
1 — построить локальный путь для изображения, вы можете использовать preg_replace
санировать URL
2 — Проверьте, что изображение еще не было загружено с помощью file_exists
, если так, загрузите это; еще скачать его
3 — Использование file_get_contents
восстановить изображение (cURL
будет бесполезно тяжелее)
4 — Сохраните его в локальном файле, используя file_put_contents
foreach( $html->find('.featured img') as $image )
{
$imageSrc = $image->src;
$imageUri = $this->rel2abs($imageSrc, $sourceURI);
$imageLocalPath = 'getImages/'.preg_replace('/[^a-z0-9-.]/i', '-', $imageUri);
if (!file_exists($imageLocalPath))
{
$imageData = file_get_contents($imageUri, false, $streamContext);
file_put_contents($imageLocalPath, $imageData);
}
else
$imageData = file_get_contents($imageLocalPath);
}
Заметки:
rel2abs
разрешить относительные URI или любое подходящее расширение pecl.imagecreatefromstring
загрузить соответствующее изображение Gd.<div class="featured"><img src="http://evil.com/your-heart-will-bleed.php"/></div>
на странице HTML, и злой файл php будет загружен. Хуже всего, это может быть выполнено, посетив ваш сайт http://mywebsite.com/getImages/your-heart-will-bleed.php
,Других решений пока нет …