//UTF-8 js escape实现 function escape($str) { preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}|[\x01-\x7f]+/e",$str,$r); $str = $r[0]; $l = count($str); for($i=0; $i <$l; $i++) { $value = ord($str[$i][0]); if($value < 223) { $str[$i] = rawurlencode(utf8_decode($str[$i])); } else { $str[$i] = "%u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i]))); } } return join("",$str); } //UTF-8 js unescape实现 function js_unescape($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); else if($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; } else if ($str[$i] == '%') { $ret .= urldecode(substr($str, $i, 3)); $i += 2; } else $ret .= $str[$i]; } return $ret; }