bei der Nutzung der Funktion base64_encode() möchte ich selbst den Code bestimmen, mit dem codiert wird, z.B. $code=“ABCgKf ... 64“;
Auf PHP-Seite hat schon jemand so eine Funktion geschrieben, leider hat diese ein Bug, und zwar die Zeichenkette, die codiert werden soll, muss eine Länge haben, die durch 3 teilbar ist.
Ich habe viel gegoogelt, leider habe ich nichts Weiteres gefunden.
Kennt jemand vielleicht eine bessere Funktion oder mir einen Tipp geben?
Vielen Dank im Voraus
Gruß, Sandro
- Code: Select all
function base64_encode($input) {
$output = "";
$chr1 = $chr2 = $chr3 = $enc1 = $enc2 = $enc3 = $enc4 = null;
$i = 0;
// $input = self::utf8_encode($input);
while($i < strlen($input)) {
$chr1 = ord($input[$i++]);
$chr2 = ord($input[$i++]);
$chr3 = ord($input[$i++]);
$enc1 = $chr1 >> 2;
$enc2 = (($chr1 & 3) << 4) | ($chr2 >> 4);
$enc3 = (($chr2 & 15) << 2) | ($chr3 >> 6);
$enc4 = $chr3 & 63;
if (is_nan($chr2)) {
$enc3 = $enc4 = 64;
} else if (is_nan($chr3)) {
$enc4 = 64;
}
$output .= self::$BinaryMap[$enc1]
. self::$BinaryMap[$enc2]
. self::$BinaryMap[$enc3]
. self::$BinaryMap[$enc4];
}
return $output;
}