最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實現(xiàn)encode64編碼類實例

 更新時間:2015年03月24日 11:36:58   作者:歐陽不瘋  
這篇文章主要介紹了php實現(xiàn)encode64編碼類,實例分析了php實現(xiàn)encode64編碼的技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了php實現(xiàn)encode64編碼類。分享給大家供大家參考。具體如下:

encode64可以獲得最短的由26個英文大小寫字母數(shù)字加上"-_"兩個符號編碼的數(shù)據(jù), 這個個字串可以在網(wǎng)絡自由傳輸, 無需考慮被自動轉碼引起的混亂. 缺點: 對于大字串太慢了, 原因不明, 可能PHP腳本本身就是慢, 所以它內置 很多函數(shù), 這些函數(shù)如果用腳本來實現(xiàn)是不可忍受的. 而JavaScript就沒這個問題, 腳本的速度快的多.

<?PHP
//encode64編碼可以同時取代encodeURI,encodeURIComponent,endode函數(shù)
//因為選取的這些字符都不會被編碼.
class Encode64{
 function code($str) {
  $KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh';
  $a = StrToBytes($str);
  $len = count($a);
  $res = $len % 3;
  $s = "";$i = 2;$v = 0;
  for (; $i < $len; $i += 3) {
   $v = $a[$i - 2] + ($a[$i - 1] << 8) + ($a[$i] << 16);
   $s .= $KEY[$v & 0x3f];
   $s .= $KEY[($v >> 6) & 0x3f];
   $s .= $KEY[($v >> 12) & 0x3f];
   $s .= $KEY[($v >> 18)];
  }
  if ($res == 1) {
   $v = $a[$i - 2];
   $s .= $KEY[$v & 0x3f];
   $s .= $KEY[($v >> 6) & 0x3f];
  } else if ($res == 2) {
   $v = $a[$i - 2] + ($a[$i - 1] << 8);
   $s .= $KEY[$v & 0x3f];
   $s .= $KEY[($v >> 6) & 0x3f];
   $s .= $KEY[($v >> 12) & 0x3f];
  }
  return $s;
 }
 function decode($codeStr) {
  $KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh';
  $dic = array();
  for ($i = 0; $i < 64; $i++) {
   $dic[$KEY[$i]] = $i;
  }
  $len = strlen($codeStr);
  $res = $len % 4;
  $cLen = floor($len/4)*3;
  if($res==2) $clen += 1;
  elseif($res==3) $clen += 2;
  $code = range(0,$clen);
  $i = 3;$v = 0; $j = 0;
  for (; $i < $len; $i += 4) {
   $v = $dic[$codeStr[$i - 3]];
   $v += $dic[$codeStr[$i - 2]] << 6;
   $v += $dic[$codeStr[$i - 1]] << 12;
   $v += $dic[$codeStr[$i]] << 18;
   $code[$j] = $v & 0xff;
   $code[$j+1] = ($v >> 8) & 0xff;
   $code[$j+2] = ($v >> 16) & 0xff;
   $j += 3;
  }
  if ($res == 2) {
 //正確的字節(jié)數(shù)肯定是余2或3, 沒有1的情況, 如果出現(xiàn), 舍棄.
   $v = $dic[$codeStr[$i - 3]];
   $v += $dic[$codeStr[$i - 2]] << 6;
   $code[$j] = $v & 0xff;
  } else if ($res == 3) {
   $v = $dic[$codeStr[$i - 3]];
   $v += $dic[$codeStr[$i - 2]] << 6;
   $v += $dic[$codeStr[$i - 1]] << 12;
   $code[$j] = $v & 0xff;
   $code[$j+1] = ($v >> 8) & 0xff;
  }
  return BytesToStr($code);
 }
}
function BytesToStr($bytes) {
 $str = '';
 foreach($bytes as $ch) {
  $str .= chr($ch);
 }
 return iconv('UTF-16BE','utf-8',$str);
}
function StrToBytes($str) {
 $str = iconv('utf-8','UTF-16BE',$str);
 $len = strlen($str);
 $bytes = array();
 for($i=0;$i<$len;$i++) {
  $bytes[] = ord($str[$i]) ;
 }
 return $bytes;
}
?>

希望本文所述對大家的php程序設計有所幫助。

相關文章

  • PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\

    PHP Warning: PHP Startup: Unable to load dynamic library \ D

    今天在家啟動PHP環(huán)境的時候,突然發(fā)現(xiàn)不能加載php_mysqli.dll了,網(wǎng)上找了一圈,沒有解決方案!在群里面受一哥們兒的啟發(fā),竟然解決了,如果你的問題還沒有解決,請按下面的方法試試
    2012-06-06
  • PHP與SQL注入攻擊防范小技巧

    PHP與SQL注入攻擊防范小技巧

    SQL注入攻擊是黑客攻擊網(wǎng)站最常用的手段。如果你的站點沒有使用嚴格的用戶輸入檢驗,那么常容易遭到SQL注入攻擊。SQL注入攻擊通常通過給站點數(shù)據(jù)庫提交不良的數(shù)據(jù)或查詢語句來實現(xiàn),很可能使數(shù)據(jù)庫中的紀錄遭到暴露,更改或被刪除。
    2011-09-09
  • PHP生成及獲取JSON文件的方法

    PHP生成及獲取JSON文件的方法

    這篇文章主要介紹了PHP生成及獲取JSON文件的方法,涉及php針對json格式數(shù)據(jù)及文件相關操作技巧,需要的朋友可以參考下
    2016-08-08
  • PHP中替換鍵名的簡易方法示例詳解

    PHP中替換鍵名的簡易方法示例詳解

    默認輸出的時候,將數(shù)據(jù)庫字段名作為數(shù)組的鍵名進行輸出,但帶有鍵名的數(shù)據(jù)不能夠滿足未知情況下的操作,下面為大家介紹個不錯的方法可以解決這個問題
    2014-01-01
  • php根據(jù)用戶語言跳轉相應網(wǎng)頁

    php根據(jù)用戶語言跳轉相應網(wǎng)頁

    這篇文章主要介紹了php根據(jù)用戶語言跳轉相應網(wǎng)頁的方法,主要區(qū)分國內國外,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 淺析php變量作用域的一些問題

    淺析php變量作用域的一些問題

    學過C的人用php的時候一般會相當順手,而且感到php太方便太輕松。但在變量作用域這方面卻與c有不同的地方,搞不好會相當郁悶,就找不到錯誤所在
    2013-08-08
  • 安裝apache2.2.22配置php5.4(具體操作步驟)

    安裝apache2.2.22配置php5.4(具體操作步驟)

    本篇文章是對安裝apache2.2.22配置php5.4的具體操作步驟進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • php實現(xiàn)圖片按比例截取的方法

    php實現(xiàn)圖片按比例截取的方法

    這篇文章主要介紹了php實現(xiàn)圖片按比例截取的方法,涉及php針對圖形的讀取、運算及生成相關操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • PHP下利用shell后臺運行PHP腳本,并獲取該腳本的Process ID的代碼

    PHP下利用shell后臺運行PHP腳本,并獲取該腳本的Process ID的代碼

    PHP下利用shell后臺運行PHP腳本,并獲取該腳本的Process ID的代碼,學習php的朋友可以參考下。
    2011-09-09
  • PHP開發(fā)實現(xiàn)微信退款功能示例

    PHP開發(fā)實現(xiàn)微信退款功能示例

    這篇文章主要介紹了PHP開發(fā)實現(xiàn)微信退款功能的方法,涉及php針對微信接口的相關調用操作技巧,需要的朋友可以參考下
    2017-11-11

最新評論

祥云县| 会理县| 万年县| 昆明市| 景德镇市| 股票| 玛多县| 龙海市| 琼结县| 伊吾县| 五常市| 克山县| 康保县| 永昌县| 安龙县| 泸溪县| 炎陵县| 灵璧县| 文成县| 沿河| 磴口县| 河津市| 宜君县| 炎陵县| 分宜县| 藁城市| 海伦市| 荣昌县| 海林市| 长葛市| 清涧县| 崇阳县| 梓潼县| 肃宁县| 肥西县| 潍坊市| 嘉祥县| 平顶山市| 涿鹿县| 湾仔区| 湖州市|