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 просто обновить нужно...

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

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.

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

(Please log in or register to see this URL) с 11.07.2008 года. Было и хорошее и не совсем, но менять не собираюсь

Поделиться

7

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

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

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

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

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, предупреждение выдает не движок, а расширения, которые не адаптированы к новым реалиям.

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

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 так обновился, что хостеры не поспевают обновить свое ПО...

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

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-кодов, и те что не содержат.

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

15

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

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

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

16

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

Xakker, проблема не в функциях! Проблема в устаревшем модификаторе /e регулярного выражения. Документацию хотя бы прочитайте (Please log in or register to see this URL) (раздел Список изменений)

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

17

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

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

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

18

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

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

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

19

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

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

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

20

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

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

Поделиться