Я не понимаю, как работает preg_replace_callback, как обновить с preg_replace - PullRequest
0 голосов
/ 10 мая 2018

Как это будет выглядеть при использовании preg_replace_callback?

$str = preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})", $str);

1 Ответ

0 голосов
/ 10 мая 2018

Если я не ошибаюсь, вы хотите использовать preg_replace_callback вместо использования /e модификатора .

Если вы хотите передать дополнительные параметры в функцию обратного вызова, вы можете использовать use идентификатор или заключить обратный вызов в другую функцию .

Второй пример может выглядеть так:

$str = preg_replace_callback(
    '/\&\#([0-9]+)\;/m', function ($matches) use ($lo) {
        // function body with return statement
}, $str
);

Примечания

Ваше регулярное выражение \&\#([0-9]+)\; будет соответствовать строке типа 𸽵. Я думаю, вам не нужно сбрасывать & и #.

В вашем коде вы используете return strtoupper($matches[1], $lo);, но strtoupper принимает один параметр вместо 2 параметров.

Если это то, что вы хотите сопоставить, то при запуске вашего кода вы можете увидеть, что $matches[1] содержит "233333", поэтому это будет называться return strtoupper("233333");

...