使用php怎么編寫一個encode64編碼類?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比姜堰網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式姜堰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋姜堰地區(qū)。費用合理售后完善,10年實體公司更值得信賴。encode64可以獲得短的由26個英文大小寫字母數(shù)字加上"-_"兩個符號編碼的數(shù)據(jù), 這個個字串可以在網(wǎng)絡(luò)自由傳輸, 無需考慮被自動轉(zhuǎn)碼引起的混亂. 缺點: 對于大字串太慢了, 原因不明, 可能PHP腳本本身就是慢, 所以它內(nèi)置 很多函數(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; } ?>
關(guān)于使用php怎么編寫一個encode64編碼類問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
分享標(biāo)題:使用php怎么編寫一個encode64編碼類-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article20/peojo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站策劃、外貿(mào)建站、定制開發(fā)、網(wǎng)站改版、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容