PHP解密Unicode及Escape加密字符串
本文给大家分享一个PHP解密Unicode及Escape加密字符串函数
<?php functionuni_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); } functionunicode2utf8($c){ $str=""; if($c<0x80){ $str.=chr($c); }elseif($c<0x800){ $str.=chr(0xc0|$c>>6); $str.=chr(0x80|$c&0x3f); }elseif($c<0x10000){ $str.=chr(0xe0|$c>>12); $str.=chr(0x80|$c>>6&0x3f); $str.=chr(0x80|$c&0x3f); }elseif($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/>\u8FD9\u662F\u6D4B\u8BD5\u6587\u672C\uFF01'; echouni_decode($str);//大家好,我是孤魂!这是测试文本!
在网上搜索一把,很多用php实现的escape函数,大同小异
functionphpescape($str){ preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr); $ar=$newstr[0]; foreach($aras$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; }
以上所述就是本文的全部内容了,希望大家能够喜欢。