php解码js使用escape转码的函数

摘要:
/***函数和jsunescape函数,解码转义编码数据*@param$str*/functionunescape($str){$sret=“”;$len=strlen($sstr);for($i=0;$i˂$len;$i++){if($str[$i]==“%”&&$str[$si+1]=='u'){$val=hexdec(substr($str,$i+2,4));if($val˂0x7
/**
* 功能和js unescape函数,解码经过escape编码过的数据
* @param $str
*/ 
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;
} 
/**
* 功能是js escape php 实现
* @param $string           the sting want to be escaped
* @param $in_encoding      
* @param $out_encoding     
*/ 
function escape($string, $in_encoding = 'UTF-8',$out_encoding = 'UCS-2') { 
    $return = '';
    if (function_exists('mb_get_info')) { 
        for($x = 0; $x < mb_strlen ( $string, $in_encoding ); $x ++) { 
            $str = mb_substr ( $string, $x, 1, $in_encoding );
            if (strlen ( $str ) > 1) { // 多字节字符
                $return .= '%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str, $out_encoding, $in_encoding ) ) );
            } else { 
                $return .= '%' . strtoupper ( bin2hex ( $str ) );
            } 
        } 
    } 
    return $return;
}

经测试这段代码能正常显示中文。

免责声明:文章转载自《php解码js使用escape转码的函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇物理机(window)安装linux系统认识Activity,创建第一个android应用-Hello Word下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js异步处理

js处理异步的几种方式 Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推)。 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(...

js Jquery字符UrlEncode 编码 C#(asp.net)解码 Server HttpUtility 区别 cookies存中文

一、Js asp.net 交互Url编码解码 C#(asp.net)编码:HttpUtility.UrlEncode(url) Jquery解码:decodeURIComponent(url); Jquery编码:encodeURIComponent(url); C#(asp.net)解码:HttpUtility.UrlDecode 二、asp.net(S...

nginx和fpm的进程数配置和502,504错误

 502 和 php-fpm.conf 1.php-cgi进程数不够用。php执行时间长,导致没有空闲进程处理新请求。 2.php-cgi进程死掉。php-fpm超时时间短,当前进程执行超时关闭连接。 实例: 1.request_terminate_timeout引起的资源问题 request_terminate_timeout默认值为 0 秒,也就是说,...

PHP获取MySql新增记录ID值的方法

今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型  获取MySql新增记录ID值的方法有 1.使用语句 mysql_query("select max(id) from user",$link); 2.使用函数msyql_insert_i...

php安装pcntl扩展

下载一个同样版本的php(我的是php5.6.27,我下的是php5.6.28) wget http://hk1.php.net/get/php-5.6.28.tar.gz/from/this/mirror 解压php tar -zxvf mirror 进入php/ext/pcntl/ cd ext/pcntl/ 执行命令phpize /usr/b...

c++与js脚本交互,C++调用JS函数/JS调用C++函数

<!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h1> <p> JavaScript 能够对事件作出反应。比如对按钮的点击: </p> <button type="button" onc...