Ошибка Warning: preg_replace()

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Ошибка Warning: preg_replace()

Re: Ошибка Warning: preg_replace()

Duncon » 18 дек 2015, 11:30

Нагуглил на свежую голову - use это реализация замыкания в php.. $this скорее всего на вызывающую структуру пытается ссылаться в данной точке..

Re: Ошибка Warning: preg_replace()

apelisin » 18 дек 2015, 00:21

решение было найдено таким

Код: Выделить всё

$that = $this;
$source = preg_replace_callback( "#\[uppod=([^\]]+)\]#is", function($m) use ($that){return $that->build_uppod($m[1]);}, $source );

Re: Ошибка Warning: preg_replace()

Duncon » 18 дек 2015, 00:14

$this не видит, укажи имя класса, и/или чего это за страшная надпись function($m)use ($this){

Ошибка Warning: preg_replace()

apelisin » 17 дек 2015, 21:41

Всем привет.

Столкнулся и я с такой ошибкой в php 5.6

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/html/test.site.ru/engine/classes/parse.class.php on line 410

сама строка

Код: Выделить всё

$source = preg_replace( "#\[uppod=([^\]]+)\]#ies", "\$this->build_uppod('\\1')", $source );
переделываем на такую

Код: Выделить всё

$source = preg_replace_callback( "#\[uppod=([^\]]+)\]#is", function($m) use ($this){return $this->build_uppod($m[1]);}, $source );
Получаем ошибку

Fatal error: Cannot use $this as lexical variable.

да, вот что мне phpinfo говорит

PHP Version 5.6.14-0+deb8u1
Apache Version Apache/2.4.10 (Debian)

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

Вернуться к началу