Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка Deprecated: preg_replace(): Как побороть?

Alex Профи (608), на голосовании 8 лет назад
Есть сайт на joomla.
Появились ошибки:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/ox2281/htdocs/libraries/joomla/filter/input.php on line 652

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/ox2281/htdocs/libraries/joomla/filter/input.php on line 654

строка 652: $source = preg_replace('/&#(\d+);/me', "utf8_encode(chr(\\1))", $source); // decimal notation

строка 654: $source = preg_replace('/&#x([a-f0-9]+);/mei', "utf8_encode(chr(0x\\1))", $source); // hex notation

Сайт лежит. Вместо него крокозяблы.

Может подскажете, как исправить?

Знаю. что preg_replace(): является устаревшим, и нужно использовать preg_replace_callback, но не знаю как переписать приведенные строчки.
Голосование за лучший ответ
Imobilazer Искусственный Интеллект (222395) 8 лет назад
Это предупреждение, а не ошибка. Можно отключить вывод и все, ибо сами код судя по всему не перепишете.
Fedotoff WriterЗнаток (346) 6 лет назад
Как отключить вывод?
Imobilazer Искусственный Интеллект (222395) Если имеется доступ к файлу php.ini то находим в нем параметр error_reporting и выставляем значение: error_reporting = E_ERROR Также предупреждения можно отключить через .htaccess: php_value error_reporting 1 Также можно добавить в index.php из корня сайта следующие строки: <?php error_reporting( E_ERROR ); ?>
theadenter Мудрец (11387) 8 лет назад
Использовать новые функции, как предложено.
Либо изменить уровень вывода ошибок с E_ALL в E_ERROR в php.ini.
А если совсем лень - отыщите эти строчки в этих файлах и проставьте перед словом preg_replace, собаку. То есть должно выглядеть так: @preg_replace
Balanovsky! Мастер (1913) 8 лет назад
Табильните его.

Типа: $source = preg_replace(
'/&#(\d+);/me',
"utf8_encode(chr(\\1))",
$source);
xenon615 Мастер (1316) 8 лет назад
цитата
Знаю. что preg_replace(): является устаревшим, и нужно использовать preg_replace_callback
это не правильное утверждение
просто вместо preg_replace() когда используешь модификатор "е" нужно использовать preg_replace_callback
в целом это означает что твоя джомла слишком стара для твоего ПХП ))
так что либо апгрейд джомлы, либо даунгрейд пхп, либо как советует theadenter
Похожие вопросы