php中escape unescape的写法
程序员文章站
2022-04-28 12:37:10
...
*/ function phpescape($str){ $sublen=strlen($str); $restring=""; for ($i=0;$i<$sublen;$i++){ if(ord($str[$i])>=127){ $tmps教程tring=bin2hex(iconv("utf-8","ucs-2",substr($str,$i,2))); if (!eregi("win",php_os)){ $tmpstring=substr($tmpstring,2,2).substr($tmpstring,0,2); } $restring.="%u".$tmpstring; $i++; } else { $restring.="%".dechex(ord($str[$i])); } } return $restring; } function unescape($str) { $str = rawurldecode($str); preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/u",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(substr($v,0,2) == "%u") $ar[$k] = iconv("ucs-2","utf-8",pack("h4",substr($v,-4))); elseif(substr($v,0,3) == "&#x") $ar[$k] = iconv("ucs-2","utf-8",pack("h4",substr($v,3,-1))); elseif(substr($v,0,2) == "&#") { $ar[$k] = iconv("ucs-2","utf-8",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); } function unescape($str) { $str = rawurldecode($str); preg_match_all("/(?:%u.{4})|.+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(substr($v,0,2) == "%u" && strlen($v) == 6) $ar[$k] = iconv("ucs-2","gb2312",pack("h4",substr($v,-4))); } //开源代码phpfensi.com return join("",$ar); }