Допустим вы создали страницу с текстом и картинками. Когда вы находитесь на локальном сервере, у вас отображаются картинки. Но если вы скопируйте базу данных и перенесёте SQL-код вашей базы на удалённый сервер, то может возникнуть небольшая проблема. Ваши картинки имеют другой урл-адрес. Конечно, можно при помощи phpMyAdmin заменить url-адрес каждой картинки. Но что делать если картинок много на странице. Перебивать адрес для каждой? Потратите много времени. Есть выход! Воспользуемся массивом $_SERVER. Читайте статью массив $_SERVER в PHP. Предлагаю вам свою фирменную функцию.
/* * replaceUrl($str, $url='remote') * замена url если на локальной машине * remote - url меняется на training-web.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://training-web.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);
}