Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Помогите заменить preg_replace() на preg_replace_callback?

Помогите заменить preg_replace() на preg_replace_callback?


     12.11.2018    Все вопросы » Общие вопросы по PHP    1192

вопрос
Помогите, занющие люди.

Имеется модуль "Онлайн" для DLE. Более поздних версий не нашёл (без данной проблемы).

В файле модуля имеется строка, которая в PHP 5.5 и выше работать не будет. Нужно переделать из preg_replace() в preg_replace_callback:


if ( strpos( $this->tpl->copy_template, "[user_group=" ) !== FALSE )
        {
            $this->tpl->copy_template = @preg_replace( "#\\[user_group=(.+?)\\](.*?)\\[/user_group\\]#ies", "\$this->check_user_group('\\1', '\\2', '".$this->user_group."')", $this->tpl->copy_template );
        }


Привожу полностью. Выручите пожалуйста...

Ответил: Flash


Чтобы не переделывать саму функцию "check_user_group", можно сделать так
if (strpos($this->tpl->copy_template, '[user_group=') !== FALSE) {
	$this->tpl->copy_template = preg_replace_callback( 
		"#\\[user_group=(.+?)\\](.*?)\\[/user_group\\]#is",
		function ($matches) {
			return $this->check_user_group($matches[1], $matches[2], $this->user_group);
		},
		$this->tpl->copy_template
	);
}
Отредактировал 12-11-2018, 09:13 - PunPun
Причина: Исправил код

2 комментария

Flash
Эксперт

Flash - 12 ноября 2018 09:01 -

Забыл, надо удалить "е" из "ies", будет
"#\\[user_group=(.+?)\\](.*?)\\[/user_group\\]#is",

Flash
Эксперт

Flash - 12 ноября 2018 09:11 -

***Комментарий удален***

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх