如果我有这个 PHP 字符串:
$string = '\\x27\\x22';
我将如何将其解码为'"
?
正则表达式可以在这里为您提供帮助:
$out = preg_replace_callback(
"(\\\\x([0-9a-f]{2}))i",
function($a) {return chr(hexdec($a[1]));},
$string
);
您不需要对其进行解码。做吧str_replace('\\x27', "'", $str);
。如果您'"
只是示例,请注意您得到了可重复的模式\\xAA
,其中x
表示十六进制表示法并且AA
本身就是十六进制值,因此每个\\xAA
表示单个字节并且AA
从 0 到 0xFF。因此,您可以使用正则表达式或只是在您的字符串上走任何其他方式,提取这些AA
值并将其转换为chr(hexdec($AA))
对应的字符并与结果字符串粘合。
$out = preg_replace_callback(
"(\\\\x([0-9a-f]{2}))i",
function($a) {return '\u00'.bin2hex(hex2bin($a[1]));},
$string
);
在我将值从 ascii 转换为 unicode 之后就可以了。