php实现encode64编码类实例

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php实现encode64编码类实例脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了PHP实现encode64编码类。分享给大家供大家参考。具体如下:

encode64可以获得最短的由26个英文大小写字母数字加上"-_"两个符号编码的数据,这个个字串可以在网络自由传输,无需考虑被自动转码引起的混乱. 缺点: 对于大字串太慢了,原因不明,可能PHP脚本本身就是慢,所以它内置 很多函数,这些函数如果用脚本来实现是不可忍受的. 而JavaScript就没这个问题,脚本的速度快的多.

<PRe class="brush:PHp;"> <>PHP //encode64编码可以同时取代encodeURI,encodeURIcomponent,endode函数 //因为选取的这些字符都不会被编码. 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) { //正确的字节数肯定是余2或3,没有1的情况,如果出现,舍弃. $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实现encode64编码类实例全部内容,希望文章能够帮你解决php实现encode64编码类实例所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。