Deprecated: Function ereg_replace() is deprecated

Раздел: Программирование
Написано: 9.04.2012
Автор: Antonio
Просмотров темы: 8 516 раз

После перехода PHP с ветки PHP 5.2 (php52-5.2.17) на PHP 5.3 на части сайтов вылезли ошибки Deprecated: Function ereg_replace() is deprecated, хорошо что первоначальный переход я начал на тестовом сервере и было время подготовится, оценить размеры работ для корректного перехода уже на рабочем сервере.

php

И так, в ветки PHP 5.3 начали борьбу с некоторыми старыми функциями, для начала они выводят предупреждение и сообщают что функция уже не поддерживается и в будущем будет вообще удалена. Но в версии 5.3 еще можно избежать проблем включив режим поддержки старых функций

Это делается в разделе [mbstring]

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
;mbstring.func_overload = 0
 
[mbstring]
mbstring.func_overload = 7

Указав значение mbstring.func_overload равное 7 мы разрешаем все старые функции.

Но это решение можно использовать только как временное, хотя зачем оно вообще?
Ведь можно пока посидеть на ветке 5.2.

Более правильное решение — это замена в коде старых функций на новые, в случае использования ereg и eregi сделать это довольно просто.

было по-старому
ereg("language",$uri)
 
стало по-новому
preg_match("/language/",$uri)
 
если было eregi, то добавляем i после разделителя-слеша
preg_match("/language/i",$uri)

Вот такими нехитрыми манипуляциями мы переходим на следующий уровень, уровень 5.3

Фразы: проблемы с PHP 5.3, после перехода на PHP 5.3, замена старых функций 5.2, замена ereg


1 звезда2 звезды3 звезды4 звезды5 звезд (Пока оценок нет)

Поделиться с друзьями:

Ещё похожие заметки:


8 комментариев

Siarzhuk
Сен 24, 2013 at 11:17

было по-старому
ereg(«language»,$uri)

стало по-новому
preg_match(«/language/»,$uri)

Не проходит это.


 
Antonio
Сен 24, 2013 at 11:39

Печально,
а ссылочку пришлось убрать за откровенную рекламу


 
Siarzhuk
Сен 24, 2013 at 11:48

Печально-то печально, но не может быть такого, что на одном сервере с PHP5.3 работает, а на другом — нет. Ошибка?


 
Antonio
Сен 24, 2013 at 12:20

Может быть все что угодно,
это рабочая конструкция, советую почитать оригинальные мануалы по PHP

И еще, в имени пользователя не нужно писать сайт (хотя бы убрать .ru)


 
Siarzhuk
Сен 24, 2013 at 17:09

>И еще, в имени пользователя не нужно писать сайт (хотя бы убрать .ru)
Да это автозаполнение. Один раз комментарий написал, теперь в каждом данные пользователя из первого указываются :)


 
Siarzhuk
Сен 24, 2013 at 17:26

Да и вообще, поотрывать бы этим разработчикам руки. Ну кому мешали «старые» функции? Сиди теперь, ковыряй древние движки, восстанавливай работоспособность сайтов.


 
Antonio
Сен 24, 2013 at 18:59

Новые функции безопаснее и быстрее и правильнее работают, так что плюс есть. А вот что сайты нужно подправлять это конечно плохо. Я возился пару дней с сайтами на OSC, зато с WordPress нет проблем =)


 
Azat
Июн 1, 2014 at 16:13

Изменил значение mbstring.func_overload в php.ini и все старые функции отлично работают на PHP 5.3.


 

Написать


Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com