模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能
<?
class coding {
//模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能
function unescape($str){
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",array( &$this, 'toUtf8'),$str);
return mb_convert_encoding($text, "gb2312", "utf-8");
}
function toUtf8($ar){
foreach($ar as $val){
$val = intval(substr($val,2),16);
if($val < 0x7F){ // 0000-007F
$c .= chr($val);
}elseif($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}else{ // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
function escape($string, $encoding = 'gb2312') {
$return = '';
for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
$str = mb_substr($string, $x, 1, $encoding);
if (strlen($str) > 1) { // 多字节字符
$return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));
} else {
$return .= '%' . strtoupper(bin2hex($str));
}
}
return $return;
}
function gb2utf8($string, $encoding = 'utf-8',$from_encode='gb2312') {
return mb_convert_encoding($string,$encoding,$from_encode);
}
}
?>
函数描述及例子
在不支持iconv的空间上模仿javascript的编码
可以用来做AJAX传递中文用
$coding=new coding();
$string_escape=$coding->escape("四川");
$string_unescape=$coding->unescape("%u56DB%u5DDD");
echo $string_escape.$string_unescape
<?
class coding {
//模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能
function unescape($str){
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",array( &$this, 'toUtf8'),$str);
return mb_convert_encoding($text, "gb2312", "utf-8");
}
function toUtf8($ar){
foreach($ar as $val){
$val = intval(substr($val,2),16);
if($val < 0x7F){ // 0000-007F
$c .= chr($val);
}elseif($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}else{ // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
function escape($string, $encoding = 'gb2312') {
$return = '';
for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
$str = mb_substr($string, $x, 1, $encoding);
if (strlen($str) > 1) { // 多字节字符
$return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));
} else {
$return .= '%' . strtoupper(bin2hex($str));
}
}
return $return;
}
function gb2utf8($string, $encoding = 'utf-8',$from_encode='gb2312') {
return mb_convert_encoding($string,$encoding,$from_encode);
}
}
?>
函数描述及例子
在不支持iconv的空间上模仿javascript的编码
可以用来做AJAX传递中文用
$coding=new coding();
$string_escape=$coding->escape("四川");
$string_unescape=$coding->unescape("%u56DB%u5DDD");
echo $string_escape.$string_unescape
作者:noel@淘宝网女装新款秋装连衣裙裤子外套上衣_2012时尚女装新款 Ecmall二次开发-PHP技术
地址:http://www.laohucheng.com/post/286/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!
Tags: escape和unescape函数 引用(0)
PHP连接ACCESS
URL地址参数加密
2009
09:34
425
0


