萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP解密Unicode及Escape加密字符串

PHP解密Unicode及Escape加密字符串

   在json中不支持中文,用它傳送中文數據就會出現數據丟失或者亂碼,必須在傳送前對要發送的字符串進行編碼,由於傳送過去需要用js進行數據解析,考慮 到js中有unescape函數,故若在php中有個escape函數,對數據進行編碼,在客戶端用unescape進行 解碼,這樣就會方便很多。

  本文給大家分享一個PHP解密Unicode及Escape加密字符串函數

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 <?php function uni_decode($s) { preg_match_all('/&#([0-9]{2,5});/', $s, $html_uni); preg_match_all('/[%]u([0-9a-f]{4})/ie', $s, $js_uni); $source = array_merge($html_uni[0], $js_uni[0]); $js = array(); for($i=0;$i<count($js_uni[1]);$i++) { $js[] = hexdec($js_uni[1][$i]); } $utf8 = array_merge($html_uni[1], $js); $code = $s; for($j=0;$j<count($utf8);$j++) { $code = str_replace($source[$j], unicode2utf8($utf8[$j]), $code); } return $code;//$s;//preg_replace('/u([0-9a-f]{4})/ie', "chr(hexdec('1'))", $s); }   function unicode2utf8($c) { $str=""; if ($c < 0x80) { $str.=chr($c); } else if ($c < 0x800) { $str.=chr(0xc0 | $c>>6); $str.=chr(0x80 | $c & 0x3f); } else if ($c < 0x10000) { $str.=chr(0xe0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3f); $str.=chr(0x80 | $c & 0x3f); } else if ($c < 0x200000) { $str.=chr(0xf0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3f); $str.=chr(0x80 | $c>>6 & 0x3f); $str.=chr(0x80 | $c & 0x3f); } return $str; }   $str='%u5927%u5BB6%u597D%uFF0C我是孤魂!<br />u8FD9u662Fu6D4Bu8BD5u6587u672CuFF01'; echo uni_decode($str); // 大家好,我是孤魂!這是測試文本!

  在網上搜索一把,很多用php實現的escape函數,大同小異

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function phpescape($str){ preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$newstr); $ar = $newstr[0]; foreach($ar as $k=>$v){ if(ord($ar[$k])>=127){ $tmpString=bin2hex(iconv("GBK","ucs-2",$v)); if (!eregi("WIN",PHP_OS)){ $tmpString = substr($tmpString,2,2).substr($tmpString,0,2); } $reString.="%u".$tmpString; } else { $reString.= rawurlencode($v); } } return $reString; }

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

copyright © 萬盛學電腦網 all rights reserved