Преобразовать строку в соответствующий объект - PullRequest
0 голосов
/ 23 мая 2018

Итак, у меня есть эта анонимная функция, которая преобразует каждый символ моей строки в сущность.

var myStr = myStr.replace(/[\u0022\u0027\u0080-\FFFF]/g, function(a) {
   return '&#' + a.charCodeAt(0) + ';';
});  

Мне нужно сделать то же самое с PHP.
У меня будет нормальная строка и преобразует ее в эквивалентный код сущности .
например:

Иметь -> Хочу: Képzeld el PDF -------> Képzeld el PDF

Я читал о preg_replace_callback

Выполнитьпоиск и замена регулярного выражения с помощью обратного вызова

Но я не знаю, как применить то же самое в PHP.
Я мог бы также использовать анонимную функцию в preg_replace, например:

 $line = preg_replace_callback(
        '/[\u0022\u0027\u0080-\FFFF]/g',
        function ($matches) {
            return '&#' + a.charCodeAt(0) + ';';
        },
    );

Я не мог заставить его работать или найти эквивалент для charCodeAt.Даже диапазон символов регулярного выражения не поддерживается функцией preg_replace.

1 Ответ

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

Вы можете использовать IntlChar::ord(), чтобы найти кодовую точку символа.Ниже приведена транспилированная версия:

$myStr = preg_replace_callback('~[\x{0022}\x{0027}\x{0080}-\x{ffff}]~u', function ($c) {
    return '&#' . IntlChar::ord($c[0]) . ';';
}, $myStr);

См. live demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...