Maison  >  Article  >  développement back-end  >  Conseils pour utiliser la classe d'encodage encode64 en php

Conseils pour utiliser la classe d'encodage encode64 en php

墨辰丷
墨辰丷original
2018-06-12 09:59:171106parcourir

Cet article présente principalement la classe d'encodage de PHP pour implémenter encode64 et analyse les techniques de PHP pour implémenter l'encodage encode64. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Les exemples de ceci. L'article décrit l'implémentation de encode64 dans la classe PHP Coding. Les détails sont les suivants :

encode64 peut obtenir les données les plus courtes codées par 26 lettres et chiffres anglais majuscules et minuscules plus les deux symboles "-_". Cette chaîne peut être librement transmise sur le réseau sans avoir à en tenir compte. être automatiquement converti. La confusion causée par le code. Inconvénients : Il est trop lent pour les grandes chaînes. La raison est peut-être inconnue. Peut-être que le script PHP lui-même est lent, donc ces fonctions sont intolérables. implémenté dans les scripts. JavaScript n'a pas ce problème. Scripts La vitesse est beaucoup plus rapide.

<?PHP
//encode64编码可以同时取代encodeURI,encodeURIComponent,endode函数
//因为选取的这些字符都不会被编码.
class Encode64{
 function code($str) {
  $KEY = &#39;PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh&#39;;
  $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 = &#39;PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh&#39;;
  $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 = &#39;&#39;;
 foreach($bytes as $ch) {
  $str .= chr($ch);
 }
 return iconv(&#39;UTF-16BE&#39;,&#39;utf-8&#39;,$str);
}
function StrToBytes($str) {
 $str = iconv(&#39;utf-8&#39;,&#39;UTF-16BE&#39;,$str);
 $len = strlen($str);
 $bytes = array();
 for($i=0;$i<$len;$i++) {
  $bytes[] = ord($str[$i]) ;
 }
 return $bytes;
}
?>

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère que ce sera le cas. utile à l’étude de chacun.

Recommandations associées :

Comment modifier la taille des images téléchargées en PHP

Définition et utilisation de la fonction curl_setopt en PHP

php formate le texte au format utilisable Js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn