网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 PHP实现Javascript中的escape及unescape函数代码分享
内容
    这篇文章主要介绍了PHP实现Javascript中的escape及unescape函数代码分享,本文给出两个实现版本,需要的朋友可以参考下
    这个类相当好用.作用么,PHP做JSON传递GBK字符,比如中文,日文,韩文神马的Unicode最合适不过了..
    <?php
    classcoding
    {
    //模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能
    functionunescape($str)
    {
    $text=preg_replace_callback("/%u[0-9A-Za-z]{4}/",array(
    &$this,
    'toUtf8'
    ),$str);
    returnmb_convert_encoding($text,"gb2312","utf-8");
    }
    functiontoUtf8($ar)
    {
    foreach($aras$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;
    }
    functionescape($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;
    }
    functiongb2utf8($string,$encoding='utf-8',$from_encode='gb2312')
    {
    returnmb_convert_encoding($string,$encoding,$from_encode);
    }
    }
    ?>
    google code 上找到的另外一个类似脚本
    <?php
    functionphpescape($str)
    {
    $sublen=strlen($str);
    $retrunString="";
    for($i=0;$i<$sublen;$i++)
    {
    if(ord($str[$i])>=127)
    {
    $tmpString=bin2hex(iconv("gbk","ucs-2",substr($str,$i,2)));
    $tmpString=substr($tmpString,2,2).substr($tmpString,0,2);
    $retrunString.="%u".$tmpString;
    $i++;
    }else{
    $retrunString.="%".dechex(ord($str[$i]));
    }
    }
    return$retrunString;
    }
    functionescape($str)
    {
    preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
    $ar=$r[0];
    foreach($aras$k=>$v)
    {
    if(ord($v[0])<128)
    $ar[$k]=rawurlencode($v);
    else
    $ar[$k]="%u".bin2hex(iconv("UTF-8","UCS-2",$v));
    }
    returnjoin("",$ar);
    }
    functionphpunescape($source)
    {
    $decodedStr="";
    $pos=0;
    $len=strlen($source);
    while($pos<$len)
    {
    $charAt=substr($source,$pos,1);
    if($charAt=='%')
    {
    $pos++;
    $charAt=substr($source,$pos,1);
    if($charAt=='u')
    {
    // we got a unicode character
    $pos++;
    $unicodeHexVal=substr($source,$pos,4);
    $unicode=hexdec($unicodeHexVal);
    $entity="&#".$unicode.';';
    $decodedStr.=utf8_encode($entity);
    $pos+=4;
    }else{
    // we have an escaped ascii character
    $hexVal=substr($source,$pos,2);
    $decodedStr.=chr(hexdec($hexVal));
    $pos+=2;
    }
    }else{
    $decodedStr.=$charAt;
    $pos++;
    }
    }
    return$decodedStr;
    }
    functionunescape($str)
    {
    $str=rawurldecode($str);
    preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);
    $ar=$r[0];
    #print_r($ar);
    foreach($aras$k=>$v)
    {
    if(substr($v,0,2)=="%u")
    $ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));
    elseif(substr($v,0,3)=="&#x")
    $ar[$k]=iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));
    elseif(substr($v,0,2)=="&#")
    {
    //echo substr($v,2,-1)."";
    $ar[$k]=iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
    }
    }
    returnjoin("",$ar);
    }
    ?>
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/22 18:10:29