ОШИБКА 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

Источник: lred.ru

Оцените статью
новости для мужчин