Heim  >  Artikel  >  Backend-Entwicklung  >  Tipps zur Verwendung der Encode64-Codierungsklasse in PHP

Tipps zur Verwendung der Encode64-Codierungsklasse in PHP

墨辰丷
墨辰丷Original
2018-06-12 09:59:171109Durchsuche

Dieser Artikel stellt hauptsächlich die PHP-Codierungsklasse zur Implementierung von encode64 vor und analysiert anhand von Beispielen. Freunde in Not können sich darauf beziehen.

Die Beispiele In diesem Artikel wird die Implementierung von encode64 in der PHP-Coding-Klasse beschrieben. Die Details lauten wie folgt:

encode64 kann die kürzesten Daten erhalten, die durch 26 englische Groß- und Kleinbuchstaben und Zahlen sowie die beiden Symbole „-_“ codiert sind. Diese Zeichenfolge kann ohne Rücksichtnahme frei im Netzwerk übertragen werden Die durch den Code verursachte Verwirrung ist unbekannt. Möglicherweise ist das PHP-Skript selbst langsam, daher sind diese Funktionen nicht akzeptabel In Skripten implementiert. Skripte haben dieses Problem nicht.

<?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;
}
?>

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird hilfreich sein Jeder lernt.

Verwandte Empfehlungen:

So ändern Sie die Größe hochgeladener Bilder in PHP

Definition und Verwendung der Funktion „curl_setopt“ in PHP

php formatiert Text in Js verwendbares Format

Das obige ist der detaillierte Inhalt vonTipps zur Verwendung der Encode64-Codierungsklasse in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn