Как извлечь изображение с веб-сайта с помощью simple-html-dom?

Как извлечь изображения с сайта и загрузить их в локальный файл с помощью простой 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>";
}

Помоги мне, пожалуйста!!

-1

Решение

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.
  • getImages / поместит все изображения в подпапку: вам нужно вручную создать эту подпапку или проверить ее наличие в коде PHP и создать ее при необходимости
  • $ imageData содержит необработанные данные изображения, которые вы можете использовать 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,
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]