替换字符串中的 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
   );
}