1

Тема: Помогите исправить ошибку preg_replace.

Всем привет! Вылезает на всех страницах вот такая ошибка:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/u111563031/public_html/include/parser.php on line 807

Как её можно исправить?

Заранее спасибо. smile

Поделиться

Re: Помогите исправить ошибку preg_replace.

Видимо версия php 5.5
Там убрали preg_replace, вместо нее ввели preg_replace_callback, но простой заменой не отделаться, регулярные выражения там надо переписывать. Как вариант - через htachess отключить вывод ошибок, например вот так:

php_flag display_errors off 
php_flag display_startup_errors off

ну или изменить версию php на хостинге

Сайт Бритва 6-4

Поделиться

3

Re: Помогите исправить ошибку preg_replace.

Бритва 6-4,  punbb просто обновить нужно...

Новые стили и расширения на  PunBB.INFO

Поделиться

Re: Помогите исправить ошибку preg_replace.

Xakker пишет:

Бритва 6-4,  punbb просто обновить нужно...

preg_replace встречается и в версии 1.4.4 - куда же еще обновлять? )))

Сайт Бритва 6-4

Поделиться

5

Re: Помогите исправить ошибку preg_replace.

Бритва 6-4, поставил по твоему способу- ошибки пропали в PM
Или просто поменять версию? На какую?

Поделиться

6

Re: Помогите исправить ошибку preg_replace.

Это не ошибка, а предупреждение о том, что используется устаревшая функция и всё пока работает.
Какое время ещё можно использовать эту функцию зависит от хостера.
Может лет пят будет работать, а может два-три месяца и вот тогда будут Ерроры и сайт не будет работать.
Поэтому давить вывод сообщений в браузер не совсем правильно потому, что от этого будут ещё ну очень неприятные последствия.

Мой хостер с 11.07.2008 года. Было и хорошее и не совсем, но менять не собираюсь

Поделиться

7

Re: Помогите исправить ошибку preg_replace.

nero77777,
1. Следует обновить движок форума до версии 1.4.4
2. Потом следует обновить все плагины добавляющие сторонние бб-коды (тут придется по форуму полазить, чтобы найти нужные изменения).

P.S. Либо откатить PHP на хостинге до версии 5.4, если не ошибаюсь.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

8

Re: Помогите исправить ошибку preg_replace.

Я не думал, что на версии 1.3 кто-то еще сидит...

THEMES

Сайт TheDenchik

Поделиться

9

Re: Помогите исправить ошибку preg_replace.

Спасибо большое за помощь! У меня, кстати, версия 1.4.3, а последняя вот такая 1.4.4. Так вот! wink

Поделиться

10

Re: Помогите исправить ошибку preg_replace.

даже 1.4.4 на php 5.5 выдает такое предупреждение. Ничего страшного тут нет, я рекомендую сменить у хостера в настройках php на 5.2-5.3

Сайт Бритва 6-4

Поделиться

11

Re: Помогите исправить ошибку preg_replace.

Бритва 6-4, предупреждение выдает не движок, а расширения, которые не адаптированы к новым реалиям.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

12

Re: Помогите исправить ошибку preg_replace.

Бритва 6-4, У меня 1.4.2 и php 5.5, ошибок нет.

THEMES

Сайт TheDenchik

Поделиться

13

Re: Помогите исправить ошибку preg_replace.

Visman,  почему же тогда ссылается не на расширение, а на файл движка?

/home/u111563031/public_html/include/parser.php on line 807

Если бы эта функция preg_replace_callback в файле parser.php на строке 807 была бы одна, то можно было бы вначале проверить какая из функций доступна ту и вызвать. Но она не одна, ведь в последнее время PunBB так обновился, что хостеры не поспевают обновить свое ПО...

Новые стили и расширения на  PunBB.INFO

Поделиться

14

Re: Помогите исправить ошибку preg_replace.

Xakker, потому что в этой строке функция обрабатывает bb-коды из массива, а bb-коды добавляются в массив в том числе расширениями!

Тут ошибка разработчиков есть в том, что они заменили функцию preg_replace на preg_replace_callback в двух местах

    $count = count($pattern);
    for ($i = 0; $i < $count; $i++) {
        $text = preg_replace_callback($pattern[$i], create_function('$matches', 'return "'.$replace[$i].'";'), $text);
    }
    
    $count = count($pattern_callback);
    for ($i = 0; $i < $count; $i++) {
        $text = preg_replace_callback($pattern_callback[$i], create_function('$matches', 'return '.$replace_callback[$i].';'), $text);
    }

а надо было менять только в последнем. Тогда бы проблем с переходом было меньше. А в таком исполнении нужно дорабатывать все расширения, и те что содержат модификатор /e в регулярных выражениях для bb-кодов, и те что не содержат.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

15

Re: Помогите исправить ошибку preg_replace.

Visman,  я ради интереса написал своему хостеру, он сказал что функция поддерживается, PHP Version 5.6.15, но на моем "полигоне", где я тестирую ипишу расширения  PunBB 1.4.4 работает с ошибками. То проблема со входом, то сообщения не отображаются. Причем визуально ошибки не отобразились, обнаружил их логе php.
На данный момент решил проблему заменой файла parser.php от версии 1.4.3

Новые стили и расширения на  PunBB.INFO

Поделиться

16

Re: Помогите исправить ошибку preg_replace.

Xakker, проблема не в функциях! Проблема в устаревшем модификаторе /e регулярного выражения. Документацию хотя бы прочитайте http://php.net/manual/ru/function.preg-replace.php (раздел Список изменений)

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

17

Re: Помогите исправить ошибку preg_replace.

аа, вот где собака порылась  ))
Но решение многих волнует, а менять код самостоятельно не все осилят. Может какую нибудь заплатку сделать? Временно, как вариант. Например на хук  ps_do_bbcode_end навесить ее.

Новые стили и расширения на  PunBB.INFO

Поделиться

18

Re: Помогите исправить ошибку preg_replace.

Xakker, следует обновить (сделать совместимыми с punbb 1.4.4) все расширения добавляющие свои bb-коды - вот единственное решение.

Моя сборка FluxBB 1.5 * Parserus - BBCode parser

Поделиться

19

Re: Помогите исправить ошибку preg_replace.

Visman, ты прав. В идеале это было бы лучшим решением. Жаль только то что ни на официальном, ни на этом форуме нет репозитория для каждой версии Punbb.
Понятно, что расширений уже сотня, а то и больше. Их пишут все кому ни лень. Но хотя бы для оффициальных и проверенных расширений реально же сделать хранилище и следить за ним? Тем более существует официальное расширение pun_repository позволяющее отслеживать обновления прямо из админки...

Новые стили и расширения на  PunBB.INFO

Поделиться

20

Re: Помогите исправить ошибку preg_replace.

Вообщем, я изменил в настройках у хостера версию PHP с 5.5 на 5.4 - и всё! Ошибки 807 больше нет! Спасибо всем за помощь! С новым годом wink

Поделиться