голосование
PHP
Javascript
BASH
Firebird
HTML
Программы
Хостинг
Майнинг
Ресурсы
GIT
SEO
Oracle
Python
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Замена url-адресов для картинок в зависимости от сервера PHP

Допустим вы создали страницу с текстом и картинками. Когда вы находитесь на локальном сервере, у вас отображаются картинки. Но если вы скопируйте базу данных и перенесёте SQL-код вашей базы на удалённый сервер, то может возникнуть небольшая проблема. Ваши картинки имеют другой урл-адрес. Конечно, можно при помощи phpMyAdmin заменить url-адрес каждой картинки. Но что делать если картинок много на странице. Перебивать адрес для каждой? Потратите много времени. Есть выход! Воспользуемся массивом $_SERVER. Читайте статью массив $_SERVER в PHP. Предлагаю вам свою фирменную функцию.


/*
 * replaceUrl($str, $url='remote')
 * замена url если на локальной машине
 * remote - url меняется на trainingweb.ru
 * local или др. - меняется на engine
*/
public function replaceUrl($str, $url='remote')
{
	// меняем " на " для CKEditor
	$element = '"';
	if(substr_count($str, $element) > 0) 
	{
		$str = str_replace($element, '"', $str);
	}
	
	// если на локальном сервере
	if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
	{
		$replace = array('http://engine', 'http://trainingweb.ru');
		if($url == 'remote') $replace = array_reverse($replace);
		
		// 1-ищем, 2-меняем
		$str = str_replace($replace[1], $replace[0], $str);
		return $str;
	}
	else return $str;
}

Вы должны точно представлять себе что такое локальный сервер и что такое удалённый сервер. Если эта функция работает, то вам не обязательно задумываться о том какой у вас url-адрес. Она просто заменит урл в зависимости от ip-адреса. Более того при записи в базу данных вы можете сразу заменить url ваших картинок на url удаленного сервера, и больше не менять url-пути картинок. После того как получен POST-массив, вы сразу можете обработать элементы массива моей функцией replaceUrl($arr['text'], 'remote').


//POST-массив
$arr = $POST;
/*для локального сервера 
применяете для просмотра страниц 
на локальном компьютере*/
$arr['text'] = replaceUrl($arr['text'], 'local'); 
/*при добавлении страницы в базу данных 
для удаленного сервера*/
$arr['text'] = replaceUrl($arr['text'], 'remote'); 

Вы можете использовать функцию как вам захочется, но я бы посоветовал сразу менять урл на урлы удалённого сервера. Когда вы будите просматривать страницы на локальном сервере, то имеет смысл воспользоваться этой функцией. Она хороша как для записи в базу данных, так и при просмотре. Если на удалённом сервере функция сработает, то она не будет менять url из-за ip (127.0.0.1).

При редактировании данных в редакторе CKEditor, в текст добавляется символ \. Потом отредактированный текст с этим символом будет записан в базу данных. Это очень странно и нужно бороться с этим моментом. Ошибка хотя бы в один символ в урле не позволит браузеру отобразить картинку.


// меняем " на " для CKEditor
$element = '"';
if(substr_count($str, $element) > 0) 
{
	$str = str_replace($element, '"', $str);
}
просмотры: 1830, уровень: лёгкий уровень, рейтинг: 5, дата: 2015-08-08 20:00:00
проголосовать:

Комментарии:

добавил(а): Сергей
дата: 2015-09-03 16:06:09
Спасибо, помогло! Отличный сайт))
добавил(а): Егор Астапов
дата: 2015-09-03 17:48:58
Не за что )))





поиск
сайты друзей
банеры
домен RU всего за 99 рублей
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.