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

 更新时间:2010年08月08日 11:45:56   作者:  
很多时候需要用到js的escape函数来转换中文字符,可是用js转换后的字符怎么用php来转换回来呢,下面我就找到了两个很实用的函数。
GB2312编码:
复制代码 代码如下:

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","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$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)));
}
}
return join("",$ar);
}

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

function 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;
}

相关文章

  • ThinkPHP中处理表单中的注意事项

    ThinkPHP中处理表单中的注意事项

    这篇文章主要介绍了ThinkPHP中处理表单中的注意事项,分析并总结了ThinkPHP表单处理中需要注意的问题,包括URL访问、错误处理、查询、添加、删除的技巧等问题,需要的朋友可以参考下
    2014-11-11
  • PHP中的output_buffering详细介绍

    PHP中的output_buffering详细介绍

    这篇文章主要介绍了PHP中的output_buffering详细介绍,本文讲解了output buffering的一些高级用法,需要的朋友可以参考下
    2014-09-09
  • 深入浅出理解PHP原理之变量赋值

    深入浅出理解PHP原理之变量赋值

    将会对变量赋值过程中,PHP内部对数据处理的原理进行阐述,不过在讲述该原理前,需要先了解一下变量名和它的值是如何关联起来的,这个对变量赋值的理解非常重要
    2021-09-09
  • php图片加水印原理(超简单的实例代码)

    php图片加水印原理(超简单的实例代码)

    我看到网上有好多关于图片加水印的类,写的很好 ,我这里只是把相应的原理写下,具体需求,根据自己的情况来修改,很简单的,写的不好,高手见谅
    2013-01-01
  • PHP转盘抽奖接口实例

    PHP转盘抽奖接口实例

    这篇文章主要介绍了PHP转盘抽奖接口的实现方法,实例分析了随机抽奖接口的实现原理与对应数据库操作的技巧,需要的朋友可以参考下
    2015-02-02
  • PHP基于curl后台远程登录正方教务系统的方法

    PHP基于curl后台远程登录正方教务系统的方法

    这篇文章主要介绍了PHP基于curl后台远程登录正方教务系统的方法,结合实例形式分析了php使用curl及cookie实现远程登陆的操作技巧,需要的朋友可以参考下
    2016-10-10
  • php UNIX时间戳用法详解

    php UNIX时间戳用法详解

    这篇文章主要介绍了php UNIX时间戳用法,结合实例形式分析了php Unix时间戳相关函数与使用技巧,需要的朋友可以参考下
    2017-02-02
  • PHP实现逐行删除文件右侧空格的方法

    PHP实现逐行删除文件右侧空格的方法

    这篇文章主要介绍了PHP实现逐行删除文件右侧空格的方法,涉及php针对文件的打开、逐行读取、rtrim函数删除右侧空格及文件保存等技巧,需要的朋友可以参考下
    2015-12-12
  • ThinkPHP与PHPExcel冲突解决方法

    ThinkPHP与PHPExcel冲突解决方法

    最近一个项目需要批量导入Excel数据,要用到PHP读取Excel中的内容然后导入到数据库。
    2011-08-08
  • php读取txt文件并将数据插入到数据库

    php读取txt文件并将数据插入到数据库

    这篇文章主要介绍了php读取txt文件并将数据插入到数据库的方法和示例代码,小文件大家可以参考第一种,大文件导入的话请参考第二种。
    2016-02-02

最新评论