1

Topic: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Вылезла ошибка после перехода на PunBB 1.4.3
PHP Deprecated:  preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/f/366_281/***.com/public_html/forum/include/parser.php on line 807

Почитав немного инфы, я пришел к выводу, что нужно заменить старую функцию на новую. Достаточно просто заменить функцию или же нужно всю регулярку целиком переписывать? Кто вкурсе?

Если вас никто не критикует – значит успеха вы еще не добились.

2 (edited by 2016.02.26 13:17)

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

YT007, либо обновлять до 1_4_4 либо откатить версию php. Вроде она должна быть не выше 5.5. Напишите тикет вашему хостеру, мол какая версия еще поддерживает эту функцию

Модификатор /e теперь считается устаревшим. Используйте функцию preg_replace_callback(). Смотрите документацию PREG_REPLACE_EVAL с дополнительной информацией и описанием проблем с безопасностью.

читайте мануал

3

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Обновил до 1.4.4 версии, теперь сообщения куда то пропали! Как такое может быть?

Если вас никто не критикует – значит успеха вы еще не добились.

4

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Обновил до 1.4.4 версии, теперь сообщения куда то пропали! Как такое может быть?

видимо какое либо расширение все еще использует модификатор и не адаптировано под 1_4_4. Отключайте по очереди, как только текст появится, значит его мусолить и нужно...

5

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Fancy Video Tag • Версия 0.4.11.1 • Разработчик: dimka.linux@gmail.com
вот это расширение отключил, текст появился PunBB_INFO_ICQ/smile 
Спасибо вам большое!
Теперь второй вопрос, как теперь переписать расширение, чтобы оно заработало? или есть какой нибудь аналог?
просто, у меня на форуме так же куча видеоклипов из ютуба.

Если вас никто не критикует – значит успеха вы еще не добились.

6

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Откройте
manifest.xml
найти хук
ps_do_bbcode_replace
Заменить

                $pattern[] = '`\[video\]([^\[]+)\[/video\]`e';
                $replace[] = 'fancy_video_tag_parse(\'$1\')';

На этот

                $pattern[] = '`\[video\]([^\[]+)\[/video\]`';
                $replace[] = '".fancy_video_tag_parse($matches[1])."';

решение взято отсюда

7

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Супер! Спасибо!

Если вас никто не критикует – значит успеха вы еще не добились.

8

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Еще одна выявилась ошибка. Вот такая:
PHP Deprecated:  preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/f/366_281/***.com/public_html/forum/include/parser.php(748) : eval()'d code on line 22
уже ругается на 748 строку parser.php

Если вас никто не критикует – значит успеха вы еще не добились.

9

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

YT007 wrote:

Еще одна выявилась ошибка. Вот такая:
PHP Deprecated:  preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/f/366_281/***.com/public_html/forum/include/parser.php(748) : eval()'d code on line 22
уже ругается на 748 строку parser.php

748 это хук :
    $return = ($hook = get_hook('ps_do_bbcode_start')) ? eval($hook) : null;

Ищи по базе, по таблице хуков что на нем сидит

10

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

Нашел! Вот оно:
Spoiler BBcode • Версия 0.8 • Разработчик: dimka.linux@gmail.com

а вот строка с модификатором:

        $text = preg_replace('#\[spoiler=(&\#039;|&quot;|"|\'|)(.*?)\\1\]#e', '"</p><div class=\"fancy_spoiler_switcher\"><div class=\"fancy_spoiler_switcher_header\"><strong>+</strong>&nbsp;".str_replace(array(\'[\', \'\\"\'), array(\'&#91;\', \'"\'), \'$2\')."</div><div class=\"fancy_spoiler\"><p>"', $text);

есть ли решение поменять на рабочий вариант?

Если вас никто не критикует – значит успеха вы еще не добились.

11

Re: Ошибка PHP Deprecated: preg_replace(): The /e modifier is deprecated

YT007. я не знаю точной причины, но dimka.linux уже как несколько лет не поддерживает свои расширения. Я не вижу смысла в их использовании. В качестве альтернативы используйте расширение от Висман'а
Spoiler BBcode • Версия 1.0.3 • Разработчик: Visman (visman@inbox.ru)