亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1885 | 回復: 0
打印 上一主題 下一主題

php實現(xiàn)javascript中的unescape函數(shù)多種方法 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-12-26 13:01 |只看該作者 |倒序瀏覽
在使用AJAX的時候,在URL中使用中文傳遞經(jīng)常會出現(xiàn)編碼錯誤的。今天本來用以前那個unescape()來進行解碼,后來發(fā)現(xiàn)服務器居然沒有打開iconv擴展,超級汗,不得不找了一個類似的函數(shù),主要從utf-8轉(zhuǎn)化成gb2312。
?
function utf8RawUrlDecode ($source) {
    $decodedStr = "";
    $pos = 0;
    $len = strlen ($source);
    while ($pos  $len) {
        $charAt = substr ($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr ($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr ($source, $pos, 4);
                $unicode = hexdec ($unicodeHexVal);
                $entity = "&#". $unicode . ';';
                $decodedStr .= utf8_encode ($entity);
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr ($source, $pos, 2);
                $decodedStr .= chr (hexdec ($hexVal));
                $pos += 2;
            }
        } else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }
    return $decodedStr;
}
這個函數(shù)轉(zhuǎn)化過來的是個html實體的串,不影響顯示但在數(shù)據(jù)庫沒有可讀性,所以使用$value=mb_convert_encoding($value,'GB2312','HTML-ENTITIES');來轉(zhuǎn)化成適合自己需要的編碼
另外附上iconv版的函數(shù):
function unescape($str) {
  $str = urldecode($str);
  preg_match_all("/(?:%u.{4}|&#x.;|&#d+;|.+)/U",$str,$r);
  $ar = $r[0];
  foreach($ar as $k=>$v) {
    if(substr($v,0,2) == "%u")
      $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
    elseif(substr($v,0,3) == "&#x")
      $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,3,-1)));
    elseif(substr($v,0,2) == "&#") {
      $ar[$k] = iconv("UCS-2","GB2312",pack("n",substr($v,2,-1)));
    }
  }
  return join("",$ar);
}
function escape($str) {
    preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$r);
    $ar = $r[0];
    foreach($ar as $k=>$v) {
       if(ord($v[0])  128)
          $ar[$k] = rawurlencode($v);
       else
     $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
    }
    return join("",$ar);
}


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/13284/showart_1743838.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP