替换字符串中的 utf8 文字
Replace utf8 literals in string
我从外部服务接收到一个字符串,其中包含一些 utf8 文字。
$a = $param1;
echo $a;
\xe7\xe3
如何将 $a(一个包含 8 个字符的 utf8 字符串)转换为“çã”?
我知道我可以将 strtr 与替换图一起使用,但我认为也许有更好的方法。
简化例子,我有一个简单的网页:
<?php
echo '<html><body>'.$_GET['aa'].'</body></html>';
我用 ?aa=\xe7\xe3
参数调用它
浏览器显示 \xe7\xe3
但我想显示 çã
就像我用双引号 "\xe7\xe3"
声明一样。
使用评论中的提示,我得到了一个稍微不同的算法:
function decode_code($code){
return preg_replace_callback(
"@\\(x)?([0-9a-f]{2,3})@",
function($m){
return utf8_encode(chr($m[1]?hexdec($m[2]):octdec($m[2])));
},
$code
);
}
我从外部服务接收到一个字符串,其中包含一些 utf8 文字。
$a = $param1;
echo $a;
\xe7\xe3
如何将 $a(一个包含 8 个字符的 utf8 字符串)转换为“çã”?
我知道我可以将 strtr 与替换图一起使用,但我认为也许有更好的方法。
简化例子,我有一个简单的网页:
<?php
echo '<html><body>'.$_GET['aa'].'</body></html>';
我用 ?aa=\xe7\xe3
参数调用它
浏览器显示 \xe7\xe3
但我想显示 çã
就像我用双引号 "\xe7\xe3"
声明一样。
使用评论中的提示,我得到了一个稍微不同的算法:
function decode_code($code){
return preg_replace_callback(
"@\\(x)?([0-9a-f]{2,3})@",
function($m){
return utf8_encode(chr($m[1]?hexdec($m[2]):octdec($m[2])));
},
$code
);
}