最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用PHP實(shí)現(xiàn)javascript的escape和unescape函數(shù)

 更新時(shí)間:2013年06月29日 09:50:50   作者:  
本篇文章是對(duì)使用PHP實(shí)現(xiàn)javascript的escape和unescape函數(shù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
前端開發(fā)工程師都知道javascript有編碼函數(shù)escape()和對(duì)應(yīng)的解碼函數(shù)unescape(),而php中只有個(gè)urlencode和urldecode,這個(gè)編碼和解碼函數(shù)對(duì)encodeURI和encodeURIComponent有效,但是對(duì)escape的是無效的。
javascript中的escape()函數(shù)和unescape()函數(shù)用戶字符串編碼,類似于PHP中的urlencode()函數(shù),下面是php實(shí)現(xiàn)的escape函數(shù)代碼:
復(fù)制代碼 代碼如下:

/**
 * js escape php 實(shí)現(xiàn)
 * @param $string           the sting want to be escaped
 * @param $in_encoding      
 * @param $out_encoding     
 */
function escape($string, $in_encoding = 'UTF-8',$out_encoding = 'UCS-2') {
    $return = '';
    if (function_exists('mb_get_info')) {
        for($x = 0; $x < mb_strlen ( $string, $in_encoding ); $x ++) {
            $str = mb_substr ( $string, $x, 1, $in_encoding );
            if (strlen ( $str ) > 1) { // 多字節(jié)字符
                $return .= '%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str, $out_encoding, $in_encoding ) ) );
            } else {
                $return .= '%' . strtoupper ( bin2hex ( $str ) );
            }
        }
    }
    return $return;
}

對(duì)應(yīng)的解碼php unescape代碼是:
復(fù)制代碼 代碼如下:

function 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;
}

相關(guān)文章

最新評(píng)論

施甸县| 九龙县| 罗田县| 寿光市| 南充市| 香港| 福安市| 莱西市| 荣成市| 扬州市| 台东市| 嵊泗县| 类乌齐县| 永胜县| 襄樊市| 柘城县| 北票市| 阿勒泰市| 行唐县| 枣强县| 神木县| 福清市| 龙海市| 廉江市| 苗栗市| 油尖旺区| 广德县| 蓝山县| 淄博市| 石狮市| 巩义市| 改则县| 塘沽区| 苍山县| 隆回县| 宾川县| 牙克石市| 晴隆县| 乌拉特中旗| 南丹县| 米脂县|