Home >Backend Development >PHP Tutorial >PHP implements encode64 encoding class example_PHP tutorial
This article mainly introduces php to implement encode64 encoding class. The example analyzes the techniques of php implementing encode64 encoding. It has certain reference value and is needed. Friends can refer to it
The example in this article describes the implementation of encode64 encoding class in PHP. Share it with everyone for your reference. The details are as follows:
encode64 can obtain the shortest encoded data consisting of 26 English uppercase and lowercase letters and numbers plus the two symbols "-_". This string can be freely transmitted over the network without having to consider the confusion caused by automatic transcoding. Disadvantages : It is too slow for large strings. The reason is unknown. Maybe the PHP script itself is slow, so it has many built-in functions. If these functions are implemented in scripts, it would be intolerable. JavaScript does not have this problem, and scripts are much faster.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
//encode64 encoding can replace encodeURI, encodeURIComponent, and endode functions at the same time //Because the selected characters will not be encoded. 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) { //The correct number of bytes must be 2 or 3. If there is no 1, discard it if it occurs. $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; } ?> |
I hope this article will be helpful to everyone’s PHP programming design.