A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 303

Сохранить изображения из интернета - Примеры на PHP

Сохранить изображения из интернета - PHP

Автор: Mowshon.
Опубликовано 25 февраля 2012
в рубрике PHP, Примеры

Просмотров: 4885.
Подписаться на комментарии по RSS.

Сохранить изображения из интернета - PHP

Делая какой-либо парсер на PHP часто приходится сталкиваться с изображениями на странице. В ручную сохранять изображения слишком долго и не продуктивно. В PHP есть несколько функции которые могут помочь быстро и главное безопасно сохранить изображения у себя на хостинге. Принцип работы скрипта прост, заходим по ссылке изображения, проверяем если нет уже такого файла в нашей папке и потом сохраняет его в нужном расширении.

Скачать скрипт из сатьи

Всю работу на себя возьмет обычная функция, такой подход считается плохим тоном с точки зрения правильного программирования т.к. одна функция должна выполнять одну задачу. Я мог выполнить нашу задачу используя классы, но "открыть банку краном" не целесообразно.

<?php
/** =======================
 ** Скрипт: Сохранить изображения из интернета
 ** Источник: Live-code.ru
 ** =======================
 **/
function SaveImage($url) {
	$dir = 'images/';
	// открываем содержимое файла по ссылке
	$Image = @file_get_contents($url);
	if(!$Image) {
		return "Не удалось получить данные файла по ссылке";
	}
	 else {
	 	// Получаем название файла
	 	$ExplodeUrl = explode("/", $url);
		$FileName = $ExplodeUrl[count($ExplodeUrl)-1];
		// Проверяем если есть такой файл в папке с картинками
		// если есть, добавляем случайные числа в название
		// тем самым делая её уникальной
		if(file_exists($dir.$FileName)) {
			$FileName = rand(10000000, 99999999).$FileName;
		}
		// Сохраняем файл
		$CreateNewFile = fopen($dir.$FileName, "w+");
		$WriteInFile = fwrite($CreateNewFile, $Image);
		return $FileName;
	 }
}
echo Saveimage("http://live-code.ru/uploads/twitter.png");
?>

Стоило бы учесть, что папка images в которой будут сохранятся изображения должна быть с правами 777, иначе получите ошибку во время работы функции fopen

Функции file_get_contents запрещено выдавать сообщение об ошибке с помощью "@" т.к. в случае несуществующей ссылки или файла, выдать пользователю человеческий текст об ошибке.

Обратите внимание как без использования регулярных выражений, мы получили название последнего файла из адресной строки. Подробный пример:

<?php
$Url = "http://live-code.ru/uploads/twitter.png";
$ExplodeUrl = explode("/", $Url);
echo $ExplodeUrl[count($ExplodeUrl)-1]; // получим: twitter.png
echo $ExplodeUrl[count($ExplodeUrl)-2]; // получим: uploads
echo $ExplodeUrl[count($ExplodeUrl)-3]; // получим: live-code.ru
echo $ExplodeUrl[count($ExplodeUrl)-5]; // получим: http:
?>

Почему мы добавили случайные числа к названию файла?

Если название файла не найдена в папке с изображениями, тогда файл сохраняется с его оригинальным именем, иначе файлу в начало добавляется случайное число с помощью функции rand(), для того, чтобы сделать имя файла уникальным тем самым не заменяя содержимого уже существующего файла с таким именем.

Будут вопросы, пишите в комментариях.

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)