Устаревшее: preg_replace(): модификатор /e устарел, вместо него используйте preg_replace_callback

Мне нужна небольшая помощь. Поскольку preg_replace устарело, я должен преобразовать все свои preg_replace в preg_replace_callback...

function parse_bb_tpl ($part, $args)
{
    // just a replace, with evaluation...
    return preg_replace (
        '/{([^}\s]+)}/e',
        "isset (\$args['\\1']) ? \$args['\\1'] : '';",
        $this->_tpls[$part]
    );
}

1 ответ

Решение

Казимир прав... это e модификатор, который удаляется. preg_replace_callback довольно круто, хотя По сути, вы просто создаете функцию, которая получает данные, и используете ее для выполнения оценки.

$string = 'The bat is batty in the bathroom';

$string = preg_replace_callback('/bat/', 'cool_function', $string);

print $string;

function cool_function($matches) {
    return '<b>'.$matches[0].'</b>';    
}

Это выводит это:

The <b>bat</b> is <b>bat</b>ty in the <b>bat</b>hroom
Другие вопросы по тегам