преобразование Unicode в стиле C в htmlentities - PullRequest
0 голосов
/ 14 января 2011

Я хочу изменить каждый C стиль unicode char на html сущность.Я написал эту функцию для этого:

function ununicode($text) {
    $text = preg_replace('/\\\\u([0-9a-f]{4})/i', '&#x$1;', $text);
    return $text;
}

она работает хорошо, , но игнорирует второй символ в sth как этот \u00f6\u00df.то есть он выдаст: ö\u00df

что не так с моим регулярным выражением?

1 Ответ

2 голосов
/ 14 января 2011

Попробуйте добавить флаг g (который допускает более одной замены на строку), так что это так:

$text = preg_replace('/\\\\u([0-9a-f]{4})/ig', '&#x$1;', $text);

Edit:

Ваш код, как написано, работает для меня:

php > $text = "\u00f6\u00df";
php > print $text;
\u00f6\u00df
php > $text2 = preg_replace('/\\\\u([0-9a-f]{4})/i', '&#x$1;', $text);
php > print $text2;
öß
...