程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 如何使用PHP實現javascript的escape和unescape函數

如何使用PHP實現javascript的escape和unescape函數

編輯:關於PHP編程

    前端開發工程師都知道javascript有編碼函數escape()和對應的解碼函數unescape(),而php中只有個urlencode和 urldecode,這個編碼和解碼函數對encodeURI和encodeURIComponent有效,但是對escape的是無效的。
    javascript中的escape()函數和unescape()函數用戶字符串編碼,類似於PHP中的urlencode()函數,下面是php實現的escape函數代碼:

    復制代碼 代碼如下:
    /**
    * 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 unescape代碼是:

    復制代碼 代碼如下:
    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;
    }
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved