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;
}
以上所述就是本文的全部内容了,希望大家能够喜欢。