ホームページ  >  記事  >  バックエンド開発  >  PHP は encode64 エンコード クラスを実装します。 example_PHP チュートリアル

PHP は encode64 エンコード クラスを実装します。 example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:00:48833ブラウズ

encode64エンコーディングクラスを実装するphpの例

この記事では主にencode64エンコーディングクラスを実装するphpを紹介しています。必要な方は参考にしてください。

この記事の例では、PHP での encode64 エンコード クラスの実装について説明します。参考のためにみんなで共有してください。詳細は以下の通りです

encode64 は、26 個の英語の大文字と小文字と数字と 2 つの記号「-_」でエンコードされた最短のデータを取得できます。この文字列は、自動トランスコーディングによって引き起こされる混乱を考慮せずに、ネットワーク上で自由に送信できます。 欠点: 大きな文字列の場合。原因は不明ですが、おそらく PHP スクリプト自体が遅いため、これらの関数がスクリプトに実装されていれば、この問題は発生せず、スクリプトははるかに高速になります。 .

?

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 エンコーディングは、encodeURI、encodeURIComponent、および endode 関数を同時に置き換えることができます

//選択した文字はエンコードされないため。

クラスEncode64{

関数コード($str) {

$KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZジュー';

$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];

}

$s を返す;

}

関数デコード($codeStr) {

$KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZジュー';

$dic = 配列();

for ($i = 0; $i $dic[$KEY[$i]] = $i;

}

$len = strlen($codeStr);

$res = $len % 4;

$cLen = フロア($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

$v = $dic[$codeStr[$i - 3]];

$v += $dic[$codeStr[$i - 2]] <<

$v += $dic[$codeStr[$i - 1]] <<

$v += $dic[$codeStr[$i]] <<

$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]] <<

$code[$j] = $v & 0xff;

} else if ($res == 3) {

$v = $dic[$codeStr[$i - 3]];

$v += $dic[$codeStr[$i - 2]] <<

$v += $dic[$codeStr[$i - 1]] <<

$code[$j] = $v & 0xff;

$code[$j+1] = ($v >> 8) & 0xff;

}

Return BytesToStr($code);

}

}

関数 BytesToStr($bytes) {

$str = '';

foreach($bytes as $ch) {

$str .= chr($ch);

}

return iconv('UTF-16BE','utf-8',$str);

}

関数 StrToBytes($str) {

$str = iconv('utf-8','UTF-16BE',$str);

$len = strlen($str);

$bytes = 配列();

for($i=0;$i

$bytes[] = ord($str[$i]) ;

}

$bytes を返す;

}

?>

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/973111.html技術記事 PHP は encode64 エンコード クラスのサンプルを実装します。この記事では主に encode64 エンコード クラスの PHP 実装を紹介します。必要な方は参考にしてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。