Мне нужна небольшая помощь. Поскольку preg_replace
устарел, мне нужно преобразовать все my preg_replace
в preg_replace_callback
…
Что я пробовал:
Изменить:
$template = preg_replace ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#ies", "\$this->check_module('\\1', '\\2')", $template );
Для того, чтобы:
$template = preg_replace_callback ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#isu", return $this->check_module($this['1'], $this['2']); $template );
Ошибка:
Parse error: syntax error, unexpected 'return'
Обратный вызов должен быть функцией, принимающей один параметр, который представляет собой массив совпадений. Вы можете передать любой ответ , включая анонимную функцию .
$template = preg_replace_callback( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#isu", function($matches) { return $this->check_module($matches[1], $matches[2]); }, $template );
(PHP> = 5.4.0 требуется для использования $this
внутри анонимной функции)