Переход на PHP 7 Как переделать из preg_replace в preg_replace_callback?

294
08 сентября 2017, 22:41

Здравствуйте. Перевожу сайты на PHP и там в шаблонизаторах используется такая конструкция. Как мне ее переделать в preg_replace_callback? Уже какие варианты только не перепробывал

$in["#\\[index:(.+?)\\](.*?)\\[/index\\]#ies"] = "indexShow('\\1', '\\2')";
$in["#\\[modules:(.+?):(.+?)](.*?)\\[/modules]#ies"] = "modulesShow('\\1', '\\2', '\\3')";
$in["#\\[guest](.*?)\\[/guest]#ies"] =  "checkGuest('\\1')";
$in["#\\[user](.*?)\\[/user]#ies"] =  "checkUser('\\1')";
$in["#\\[title:(.*?)]#ies"] =  "\$this->preTitle('\\1');";
$in["#\\[open](.*?)\\[/open]#ies"] =  "\$this->preOpen('\\1');";
$in["#\\[userinfo:(.*?)]#ies"] =  "\$this->ustinf('\\1')";
$text = preg_replace(array_keys($in), array_values($in), $str);

Помогите пожалуйста передать из preg_replace в preg_replace_callback, уже разные варианты делал, не помогает.

Answer 1

Делаете так для php7:

$in["#\\[index:(.+?)\\](.*?)\\[/index\\]#is"] = funtion($matches) {return indexShow($matches[1], $matches[2]);};
...
$text = preg_replace_callback_array(array_keys($in), array_values($in), $str);
READ ALSO
Диапазонное регулярное выражение

Диапазонное регулярное выражение

Что то голову сломалНужно вырезать все числа в диапазонах от 45

294
php проверка строки

php проверка строки

Здравствуйте, нужно проверить строку $str1 = 'abc123'; и $str2 = 'abc123ABCАбв-+';

353
Парковка доменов

Парковка доменов

Доброго времени сутокВопрос к знатокам или знакомым с данным вопросом

292
Настройка порта USB (FLOW CONTROL)

Настройка порта USB (FLOW CONTROL)

Помогите настроить порт USB DTR_CONTROL_DISABLE 0x00

358