Home  >  Article  >  Backend Development  >  PHP implements encode64 encoding class example_PHP tutorial

PHP implements encode64 encoding class example_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:00:48833browse

Example of php implementing encode64 encoding class

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.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/973111.htmlTechArticlephp implementation of encode64 encoding class example This article mainly introduces php implementation of encode64 encoding class, and the example analysis of php implementation of encode64 Coding skills have certain reference value. Friends who need them can...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn