zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP下escape解码函数的实现方法

PHP方法 实现 函数 解码 escape
2023-06-13 09:14:24 时间
GB2312编码:
复制代码代码如下:

functionunescape($str){
$str=rawurldecode($str);
preg_match_all("/%u.{4}|.{4};|d+;|.+/U",$str,$r);
$ar=$r[0];
foreach($aras$k=>$v){
if(substr($v,0,2)=="%u")
$ar[$k]=iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3)=="")
$ar[$k]=iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2)==""){
$ar[$k]=iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
returnjoin("",$ar);
}

UTF8编码:
复制代码代码如下:

functionunescape($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);
elseif($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;
}
elseif($str[$i]=="%"){
$ret.=urldecode(substr($str,$i,3));
$i+=2;
}
else$ret.=$str[$i];
}
return$ret;
}