• 技术文章 >后端开发 >php教程

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

    2016-06-13 13:00:56原创260
    此函数是PHP中哪方面的知识,其功能是何?
    洒家偶遇如下一函数,从未接触过。
    第一,是PHP中哪方面的知识?文件处理吗?还是二进制?
    第二,请从头到末注解一番。为何要用过00XX,内存码。
    function js_unescape($str)    
    {
    $ret = '';
    $len = strlen($str);
    for ($i = 0; $i < $len; $i++)
    {
    if ($str[$i] == '%' && $str[$i+1] == 'u')
    {
    $val = hexdec(substr($str, $i+2, 4));
    if ($val < 0x7f) $ret .= chr($val);
    else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
    else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
    $i += 5;
    }
    else if ($str[$i] == '%')
    {
    $ret .= urldecode(substr($str, $i, 3));
    $i += 2;
    }
    else $ret .= $str[$i];
    }
    return $ret;
    }

    ------解决方案--------------------
    解码,算是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的就不是汉字
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp val str ret chr
    上一篇: php网站模板 下一篇: 关于ajax 接收xml乱码有关问题
    Web大前端开发直播班

    相关文章推荐

    • PHP常用六大设计模式(总结分享)• PHP采集程序中常用的函数_PHP教程• 例举PHP语言中的精华与技巧(1)_PHP教程• PHP程序员最容易出现的错误总结_PHP教程• PHP字符串函数的分类总结_PHP教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网