Das Verfahren der Base64-Kodierung wurde entworfen, um Binärdaten unbeschädigt mittels Technologien wie E-Mail übertragen zu können, die nicht korrekt mit 8-Bit-Zeichen umgehen. Ziel dabei ist es, beliebige Daten in eine Zeichenfolge umzuwandeln, die Bestandteil eines jeden lateinischen Schriftsatzes ist. Deshalb ist es manchmal sinnvoll einen String nach dem Base64 Verfahren zu kodieren. Daten die Base64 kodiert sind, benötigen ca. 33% mehr Speicher als die Originaldaten.

Strings kodieren

Um einen String als Base64 zu kodieren, kann folgendermaßen vorgegangen werden

<?php
$text = "Dieser Text wird umgewandelt\r\nDieser Satz steht in einer neuen Zeile.";
$encodedText = base64_encode($text);
echo $encodedText;
?>

Ergebnis:
RGllc2VyIFRleHQgd2lyZCB1bWdld2FuZGVsdA0KRGllc2VyIFNhdHogc3RlaHQgaW4gZWluZXIgbmV1ZW4gWmVpbGUu

Strings dekodieren

Um einen Base64 kodierten String wieder zu dekodieren, kann folgendermaßen vorgegangen werden:

<?php
$text = "RGllc2VyIFRleHQgd2lyZCB1bWdld2FuZGVsdA0KRGllc2VyIFNhdHogc3RlaHQgaW4gZWluZXIgbmV1ZW4gWmVpbGUu";
$decodedText = base64_decode($text);
echo nl2br($decodedText);
?>

Ergebnis:
Dieser Text wird umgewandelt
Dieser Satz steht in einer neuen Zeile.

Hinweis:
Durch die Funktion „nl2br“ wird eine modifizierte Zeichenkette zurückgegeben, in der Zeilenumbrüche durch den entsprechenden HTML-Tag „<br>“ (break-Tag) ersetzt bzw. umgewandelt werden. Dies ist dann sinnvoll, wenn der dekodierte String z. B. in einer HTML Datei eingefügt werden soll.

Große Strings dekodieren

Sollen größere Strings dekodiert werden, empfiehlt es sich eventuell die dekodierten Daten direkt in eine Datei zu schreiben.
Dies könnte mit folgendem Code realisiert werden.

<?php
$text = "RGllc2VyIFRleHQgd2lyZCB1bWdld2FuZGVsdA0KRGllc2VyIFNhdHogc3RlaHQgaW4gZWluZXIgbmV1ZW4gWmVpbGUu";
$fp = fopen('test.txt', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, $text);
fclose($fp);
?>

Ergebnis:
Der dekodierte String wird direkt in die Datei „test.txt“ geschrieben.

Base64 String Prüfung

Um zu prüfen ob ein String bereits nach base64 kodiert wurde, kann z. B. folgende Funktion verwendet werden.

<?php
  /**
  * Check if string only contains valid base64 characters
  *
  * @param $strData string to validate.
  * @return Boolean Returns TRUE when the given string only contains
  * base64 characters, else FALSE if the string contains one non-base64 character.
  */
  function isBase64Encoded($strData) {
  		$len = strlen($strData);
  		
  		// Check every character.
  		for ($i = 0; $i < $len; ++$i) {
  			$ch = $strData[$i];
  			if (
  				($ch < '0' || $ch > '9')	
  				&& ($ch != '+')
  				&& ($ch != '/')
  				&& ($ch != '=')
  				&& ($ch < 'a' || $ch > 'z')
  				&& ($ch < 'A' || $ch > 'Z')
  			) {
  				//not a base64 encoded string 
  				return false;
  			}
  		}
  		//is a base64 encoded string
  		return true;
  }
?>
String nach Base64 kodieren und dekodieren in PHP

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.