js的escape转义中文php的转移函数,PHP下escape解码函数的落真实处境势

复制代码 代码如下:

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

复制代码 代码如下:

function unescape($str) {
$str = rawurldecode($str);
preg_match_all(“/%u.{4}|.{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) == “”)
$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编码:

 代码如下

  1. GBK (GB2312/GB18030)
    \x00-\xff   GBK双字节编码范围
    \x20-\x7f   ASCII
    \xa1-\xff   中文
    \x80-\xff   中文
    2. UTF-8 (Unicode)
    \u4e00-\u9fa5 (中文)
    \x3130-\x318F (韩文
    \xAC00-\xD7A3 (韩文)
    \u0800-\u4e00 (日文)
    ps: 阿拉伯语是出乎[\u9fa5]的字符
    正则例子:
    **preg_replace(“/([\x80-\xff])/”,””,$str);
    preg_replace(“/([u4e00-u9fa5])/”,””,$str);

你可能感兴趣的小说:

  • PHP中strnatcmp()函数“自然排序算法”举办字符串比较用法剖析(相比较strcmp函数)
  • PHP 冒泡排序 二分查找 顺序查找
    二维数组排序算法函数的详解
  • 通过PHP的放权函数,通过DES算法对数据加密和平化解密
  • php不用内置函数对数组排序的三个算法代码
  • PHP达成手提式有线电话机号码中间四个人用星号(*)遮掩的自定义函数分享
  • PHP图片管理之使用imagecopyresampled函数达成图片缩放例子
  • PHP达成通用alert函数的办法
  • PHP达成数字补零成效的2个函数介绍
  • PHP实现生成透亮背景的PNG缩略图函数分享
  • php完成的简便日志写入函数
  • PHP简单完结欧拉函数Euler功能示例

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

你也许感兴趣的篇章:

  • escape
    unescape的php下的落到实处方式
  • php utf-8转unicode的函数
  • php escape URL编码
  • php
    准确解码javascript中经过escape编码后的字符
  • php
    UTF-8、Unicode和BOM问题
  • PHP下escape解码函数的落实格局
  • 在PHP中贯彻Javascript的escape()函数代码
  • PHP中正则表明式对UNICODE字符码的相称方法
  • 哪些行使PHP实现javascript的escape和unescape函数
  • 浅析PHP中的UNICODE
    编码与解码
  • PHP函数addslashes和mysql_real_escape_string的区别
  • PHP解码unicode编码的普通话字符代码分享
  • PHP解密Unicode及Escape加密字符串

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

UTF8编码:

**一、编码范围

GB2312编码:

GB2312编码:

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

复制代码 代码如下:

其一函数可以很好的职业,可是,也是有新手不明白这些函数的法规(比如作者),用起来总是不放心,未来本人就来解释一下这么些函数的规律。并且笔者以为,拿外人的代码来复用,好比站在了巨人的双肩上,不过若不晓得外人的代码,迟早要掉到地头上。
第一句:preg_match_all(“/[\x80-\xff].|[\x01-\x7f]+/”,$str,$r);那些是用正则表明式匹配字符串中持有的字符,[\x80-\xff].
相配的是汉字,\x表示相称字符的16进制编码,[ ] 是类选拔符,“.”
表示狂妄二个字符,那样[\x80-\xff].相配的是三个字符,个中第二个就是16进制从80到ff的字符,而这刚好正是汉字编码的首先个字符。那样
就能够全体的协作壹在那之中夏族民共和国字。关于unicode中汉字的编码,大家能够到互连网检索一下。同理,[\x01-\x7f]+德文字符串,因为最早的丹麦语是
ASCII编码,编码值小于128,也正是16进制的从01到7f,”+”表示二个恐怕多个字符,那样[\x01-\x7f]+就会协作三番五次多少个韩语字符
串。

在json中不协理汉语,用它传送粤语数据就可以并发数量遗失可能乱码,必须在传
送前对要发送的字符串进行编码,由于传送过去急需用js实行数据深入分析,怀念到js中有unescape函数,故若在php中有个escape函数,对数据
进行编码,在客户端用unescape进行 解码,那样就能够便利广大。
先在网络检索一把,非常多用php完结的escape函数,完全一样,比如上边三个:

在javascript中就足以用unescape来解码了
\u0391-\uFFE5 和\u4e00-\u9fa5来协作中文
但类似后面一个带有汉字下的A-¥等 前者或者是纯汉字。
其间解码函数为:

function phpEscape($str) {
preg_match_all(“/[\x80-\xff].|[\x01-\x7f]+/”,$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
    if(ord($v[0]) < 128)
      $ar[$k] = rawurlencode($v);
    else
      $ar[$k] = “%u”.bin2hex(iconv(“GB2312″,”UCS-2”,$v));
}
return join(“”,$ar);
}

复制代码 代码如下:

稳重JS编码会自动转变到为UTF-8,
所以必须进行编码调换技巧博得不错的结果,不然会普通话乱码。但如果运用UTF-8编码就绝不这一步了。
代码如下:print iconv(‘utf-8’, ‘gb2312’,
js_unescape($_REQUEST[‘p_sort’]));
到此我们就打响地反解了js的escape编码了。
如下:
其它笔者找到个用PHP落成js的escape编码的函数:

采纳js对URubiconL中的汉字举办escape编码。 <a href=””
onclick=”window.open(‘product_list.php?p_sort=’+escape(‘脚本之家’));”>那样点击链接后的效时:
引用:
变迁了如此的作用,
很明显用PHP的urldecode()或然base64_decode()是无力回天反解的。
缓慢解决形式, 用PHP写二个反解函数:

$ar = $r[0];             //$r[0]里贮存是格外到的数组
foreach($ar as $k=>$v) {
    if(ord($v[0]) < 128)                
//要是字符编码值小于128,表达是个土耳其共和国(The Republic of Turkey)语字符
      $ar[$k] = rawurlencode($v);    //直接用rawurlencode编码
    else
      $ar[$k] = “%u”.bin2hex(iconv(“GB2312″,”UCS-2”,$v));   
//不然的话用iconv函数把汉字调换成ucs-2编码,也便是unicode编码
}

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}|.{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) == “”)
                           $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);
}

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注