将C风格的unicode转义转换为htmlentities

时间:2011-01-14 09:35:34

标签: php regex unicode html-entities

我想将每个C样式unicode字符更改为html实体。我写了这个函数来做到这一点:

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

它运作良好,忽略第二个字符,如\u00f6\u00df。即它会产生:ö\u00df

我的正则表达式错了吗?

1 个答案:

答案 0 :(得分:2)

尝试添加g标记(每行允许多次替换),这样就可以了:

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

编辑:

您编写的代码似乎对我有用:

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;
öß