PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

kinlok

PHP:
  1. if($msg) $msg = preg_replace(“#@([a-zA-Z_.0-9]+)*(?:s+((?:(.*?)))?s*)?#ies”, “compileTag(‘\1′, ‘\2′)”, $msg);

памагите решить проблему

 

ADSoft

Воспользуйтесь переводчиком, если так не понятно. Ну и сделайте соотвующие замены

 

kinlok

уже давно перевел я проста не допер просто заменить
preg_replace на preg_replace_callback или предется код подпровлять ищё ?

 

ADSoft

Придется, а как же.
Посмотрите описание одной функции а потом второй

 

Enclave1089

Здравствуйте! Хочу попросить помощи в правке кода:

PHP:
  1. if (stristr($this->result, “{lang.”))
  2.         {
  3.             $this->result = preg_replace(“#\{lang.(.+?)\}#ies”, $lang[‘\1′]”, $this->result);
  4.  
  5.         }

на preg_replace_callback

 

Enclave1089

Если я правильно начитал, то нужно preg_replace поменяйть на preg_replace_callback и удалить модификатор /e
Начну городить, если что поправьте пожалуйста.

PHP:
  1. $this->result = preg_replace_callback(“#\{lang.(.+?)\}#is”,
  2. function($is){return $lang[‘\1′]”}, $this->result);
 

Enclave1089

PHP:
  1.             $this->result = preg_replace_callback(“#\{lang.(.+?)\}#is”,
  2.             function($is){return $lang[‘$is[1]’];}, $this->result);

не знаю что сделал, ошибка не выводится но и на странице часть надписей исчезла)

а если так:

PHP:
  1.             $this->result = preg_replace_callback(“#\{lang.(.+?)\}#is”,
  2.             function($is){return $lang[‘$is[1]‘]”;}, $this->result);

то, то что исчезло, теперь выводится массивами: (

$lang[‘text138’]

$lang[‘text141’]
$lang[‘text139’]
$lang[‘text142’]
$lang[‘text140’]
$lang[‘text143’]
)
Знающий если заглянет сюда, просьба поправить.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *