我想将每个C
样式unicode
字符更改为html
实体。我写了这个函数来做到这一点:
function ununicode($text) {
$text = preg_replace('/\\\\u([0-9a-f]{4})/i', '&#x$1;', $text);
return $text;
}
它运作良好,但忽略第二个字符,如\u00f6\u00df
。即它会产生:ö\u00df
我的正则表达式错了吗?
答案 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;
öß