特殊字符的16进制表:https://websitebuilders.com/tools/html-codes/ascii/
可以通过 hexdec() 和 chr()方法来进行转换,
例子:
<?xml version=x221.0x22 encoding=x22utf-8x22?>x0A<order id=x22testx22 affiliate=x22mainx22 event_id=x221x22 ref=x22TPCYAx22 alias=x22x22/>
其中 x22 就是双引号 ",而 x0A 就是换号 ,通过一些方法转换后:
$str = "<?xml version=x221.0x22 encoding=x22utf-8x22?>x0A<order id=x22testx22 affiliate=x22mainx22 event_id=x221x22 ref=x22TPCYAx22 alias=x22x22/>"; function hexdec_string($content) { preg_replace_callback( "(\\x([0-9a-f]{2}))i", function($matches) {return chr(hexdec($matches[1]));}, // $string $content ); return $content; } echo htmlspecialchars(hexdec_string($str), ENT_QUOTES); //将 xml的内容作为纯文本输出
结果:
<?xml version="1.0" encoding="utf-8"?> <order id="test" affiliate="main" event_id="1" ref="TPCYA" alias=""/>
参考:https://stackoverflow.com/questions/12238657/decoding-javascript-escape-sequences-in-php-x27-x22-etc
http://php.net/manual/en/function.preg-replace-callback.php