Home  >  Article  >  Backend Development  >  此函数是PHP中哪方面的学问,其功能是何

此函数是PHP中哪方面的学问,其功能是何

WBOY
WBOYOriginal
2016-06-13 13:00:56914browse

此函数是PHP中哪方面的知识,其功能是何?
洒家偶遇如下一函数,从未接触过。
第一,是PHP中哪方面的知识?文件处理吗?还是二进制?
第二,请从头到末注解一番。为何要用过00XX,内存码。

function js_unescape($str)    <br />
{    <br />
    $ret = '';    <br />
    $len = strlen($str);    <br />
    for ($i = 0; $i < $len; $i++)    <br />
    {    <br />
        if ($str[$i] == '%' && $str[$i+1] == 'u')    <br />
        {    <br />
            $val = hexdec(substr($str, $i+2, 4));    <br />
            if ($val < 0x7f) $ret .= chr($val);    <br />
            else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));    <br />
            else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));    <br />
            $i += 5;    <br />
        }    <br />
        else if ($str[$i] == '%')    <br />
        {    <br />
            $ret .= urldecode(substr($str, $i, 3));    <br />
            $i += 2;    <br />
        }    <br />
        else $ret .= $str[$i];    <br />
    }    <br />
    return $ret;    <br />
}  

------解决方案--------------------
解码,算是php版的unescape(js)
js中escape方法返回一个包含了charstring内容的字符串值(Unicode格式)所有空格、标点、重音符号以
及其他非ASCII字符都用%xx编码代替,其中xx等于表示该字符的十六进制数。例如,空格返回的是"%20"
字符值大于255的以%uxxxx格式存储。

大于0x7f是汉字,高位为1,按位操作,最核心操作就是对汉字解码
0x800我也没看懂,及向右平移6位与或非就出来个东西,是得专门想想啊,谁能给详解一个汉字的编码操作啊

------解决方案--------------------

本帖最后由 xuzuning 于 2012-10-24 11:05:13 编辑 中
ucs-2
4e2d
01001110 00101101

utf-8
e4b8ad
11100100 10111000 10101101


to franzhong
既然你知道大于0x7f是汉字,那么怎就不知道小于0x800的就不是汉字
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn