php还原16进制特殊字符
Posted 一菲聪天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php还原16进制特殊字符相关的知识,希望对你有一定的参考价值。
特殊字符的16进制表:https://websitebuilders.com/tools/html-codes/ascii/
可以通过 hexdec() 和 chr()方法来进行转换,
例子:
<?xml version=\\x221.0\\x22 encoding=\\x22utf-8\\x22?>\\x0A<order id=\\x22test\\x22 affiliate=\\x22main\\x22 event_id=\\x221\\x22 ref=\\x22TPCYA\\x22 alias=\\x22\\x22/>
其中 \\x22 就是双引号 ",而 \\x0A 就是换号 \\n,通过一些方法转换后:
$str = "<?xml version=\\x221.0\\x22 encoding=\\x22utf-8\\x22?>\\x0A<order id=\\x22test\\x22 affiliate=\\x22main\\x22 event_id=\\x221\\x22 ref=\\x22TPCYA\\x22 alias=\\x22\\x22/>"; 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
以上是关于php还原16进制特殊字符的主要内容,如果未能解决你的问题,请参考以下文章