ОШИБКА DEPRECATED: FUNCTION EREGI() IS DEPRECATED IN ...

В один прекрасный момент я решил зайти на свой сайт и проверить все ли работает. Вроде бы все хорошо. А как насчет формы контактов? Ведь сайт посещаемый, а никто не пишет. Вот тут-то я и получил ошибку

Deprecated: Function eregi() is deprecated in /var/www/***/contact-us.php on line 24


И откуда то это берется подумал я? Сразу воспользовался Google и нашел ответ. А он прост. Нужно переходить с ereg, eregi на preg_match.

Я видел некоторые советы вообще убирать такие строки или куски кода. Это большая ошибка! Ваш скрипт может потерять важную функцию или стать уязвимым к каким-либо атакам. Не делайте этого!

Эта функция(и использование regex) считается устаревшей и с версии PHP 5.3.0 использование ее запрещено в php.ini.

Вы можете попытаться включить эту функцию найдя в файле конфигурации php следующие строки:

; 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
;mbstring.func_overload = 0


Чтобы включить ereg(), убираем комментарии в последней строке и пишем:

mbstring.func_overload = 4



А ещё можно убрать вывод сообщений о запрещенных функциях и записать эту строку в вашем php-скрипте:

error_reporting(E_ALL ^ E_DEPRECATED);



Но это временное решение проблемы. Лучше взять да и заменить в коде функции ereg* на preg_*(вместо regex теперь следует использовать PCRE.)
Чем отличается regex от PCRE вы можете прочитать тут: http://www.php.net/manual/ru/reference.pcre.pattern.posix.php

Допустим, у вас есть участок php-скрипта вида:

<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Недопустимый формат даты: $date";
}
?>



В новом версии php и с использованием PCRE Это будет выглядеть так:

<?php
if (preg_match ("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/", $date, $match)) {
echo "$match[3].$match[2].$match[1]";
} else {
echo "Недопустимый формат даты: $date";
}
?>



В общих чертах что нам нужно сделать:
- заменить везде ereg на preg_match
- добавить в шаблон(он указывается первым параметром функции) ограничители
- если используется eregi, то после ограничителя ставим модификатор i.
Например, вместо:

ereg('pattern', $string)
eregi('pattern', $string)


мы напишем:

preg_match('/pattern/', $string)
preg_match('/pattern/i', $string)

 

За информацию спасибо сайту http://webmastak.com.ua/index.php?newsid=77

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

ОШИБКА DEPRECATED: FUNCTION EREGI() IS DEPRECATED IN ... | | 2015-07-06 10:36:53 | | Статьи Web-мастеру | | В один прекрасный момент я решил зайти на свой сайт и проверить все ли работает. Вроде бы все хорошо. А как насчет формы контактов? Ведь сайт посещаемый, а никто не пишет. Вот тут-то я и получил ошибку Deprecated: Function eregi() is deprecated in /var/www/* | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: