js中的escape函数在PHP中的解决方案--疯子哥德
    哥德疯了
   用户中心 您的位置:笔架山信息平台>> 笔客秀>> 疯子哥德>> js中的escape函数在PHP中的解决方案--疯子哥德
日历
<< << 2008 十一月 >> >>
1
2345678
9101112131415
16171819202122
23242526272829
30
个人资料
游客已登陆 (0)未知
笔行证 888888
昵称 hacder 
笔贝 Score1
加为好友 发送短信
栏目分类
最新日志
最新评论
统计信息
  • 访问计数:1584659
    本文:251 今天:2 本月 251
  • 加为好友 发送短信

  js中的escape函数在PHP中的解决方案
2007-11-18 晴


刚刚遇到的问题
试了半天,也找了一下,ms网上的解决方案都不行
csdn上面也有差不多的问题,但是貌似说不出个所以然来

刚开始,以为跟php中用urlencode加密的差不多,想直接用urldecode(),但是还是输出乱码...
网上也有人说可以这样处理,不知道他们是怎么实现的,反正俺这里就不行

搜索了一下,发现了两个函数,比较多人介绍

代码: [Copy to clipboard]

<?
function phpescape($str)
{
$sublen=strlen($str);
$retrunString="";
for ($i=0;$i<$sublen;$i++)
{
if(ord($str[$i])>=127)
{
$tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
//$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项
$retrunString.="%u".$tmpString;
$i++;
} else {
$retrunString.="%".dechex(ord($str[$i]));
}
}
return $retrunString;
}
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);
}
?>

试了一下,直接用unescape,还是一样的结果....


突然,发现输出的字符,有点跟utf8一样,试着转了一下,
居然可以了

再找了一下,在phpx上面居然有这么一句:
js中的采用的UTF8的编码,所以在PHP解码之后也不能直接拿来使用,应该转一下码。

这样就应该没错了,如果他们都是用utf8的 基本都不用转义的,直接用urldecode或者上面的函数就可以了......

夜了,睡觉了.
# posted by hacder @ 2007-11-18 16:14:41 评论(0)




地址:


   大头虾 
2007-11-21 08:10:19
不懂,深奥,哈哈.
 


 
笔 名:
*
评 论:
最多1000字。当前字数:0
*
联系方式:

             

 
copyriht© beaplat.com All Rights Reserved 笔架山信息平台
Powered by 笔架山信息平台技术研发小组 henry
本站版权归笔架山信息平台所有,未经书面授权禁止使用