2

如果我有这个 PHP 字符串:

$string = '\\x27\\x22';

我将如何将其解码为'"

4

3 回答 3

5

正则表达式可以在这里为您提供帮助:

$out = preg_replace_callback(
  "(\\\\x([0-9a-f]{2}))i",
  function($a) {return chr(hexdec($a[1]));},
  $string
);
于 2012-09-02T18:42:04.867 回答
0

您不需要对其进行解码。做吧str_replace('\\x27', "'", $str);。如果您'"只是示例,请注意您得到了可重复的模式\\xAA,其中x表示十六进制表示法并且AA本身就是十六进制值,因此每个\\xAA表示单个字节并且AA从 0 到 0xFF。因此,您可以使用正则表达式或只是在您的字符串上走任何其他方式,提取这些AA值并将其转换为chr(hexdec($AA))对应的字符并与结果字符串粘合。

于 2012-09-02T18:38:54.947 回答
0
$out = preg_replace_callback(
  "(\\\\x([0-9a-f]{2}))i",
  function($a) {return '\u00'.bin2hex(hex2bin($a[1]));},
  $string
);

在我将值从 ascii 转换为 unicode 之后就可以了。

于 2018-03-28T07:16:47.567 回答