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进制特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在特殊时区将当前日期和时间转换为PHP中的十进制(16,4)[重复]

PHP里,16进制格式字符串,转换成具体值的方法

PHP md5密文转换成 16进制字符串?

linux minicom 怎么发16进制数据

关于PHP二进制安全的解释

php 如何将 16进制字符串转为16进制字符数组 或者将 2进制字符串转为16进制字符数组