[PHP] php端模拟js的escape()和unescape()函数 →→→→→进入此内容的聊天室

来自 , 2021-02-24, 写在 PHP, 查看 121 次.
URL http://www.code666.cn/view/3a61ed71
  1. //UTF-8 js escape实现
  2. function escape($str) {
  3.     preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}|[\x01-\x7f]+/e",$str,$r);
  4.     $str = $r[0];
  5.     $l = count($str);
  6.     for($i=0; $i <$l; $i++) {
  7.         $value = ord($str[$i][0]);
  8.         if($value < 223) {
  9.             $str[$i] = rawurlencode(utf8_decode($str[$i]));
  10.         }
  11.         else {
  12.             $str[$i] = "%u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
  13.         }
  14.     }
  15.     return join("",$str);
  16. }
  17. //UTF-8 js unescape实现
  18. function js_unescape($str) {
  19.     $ret = '';
  20.     $len = strlen($str);
  21.     for ($i = 0; $i < $len; $i++) {
  22.         if ($str[$i] == '%' && $str[$i+1] == 'u') {
  23.             $val = hexdec(substr($str, $i+2, 4));
  24.             if ($val < 0x7f) $ret .= chr($val);
  25.             else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
  26.             else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
  27.             $i += 5;
  28.         }
  29.         else if ($str[$i] == '%') {
  30.             $ret .= urldecode(substr($str, $i, 3));
  31.             $i += 2;
  32.         }
  33.         else $ret .= $str[$i];
  34.     }
  35.     return $ret;
  36. }

回复 "php端模拟js的escape()和unescape()函数"

这儿你可以回复上面这条便签

captcha