Signatur
Beschreibung
imap_8bit() wandelt einen beliebigen 8-Bit-String in die Quoted-Printable-Kodierung um. Diese Kodierung ist im E-Mail-Bereich (MIME) weit verbreitet und stellt sicher, dass Binärdaten oder Texte mit Sonderzeichen sicher über Protokolle übertragen werden können, die nur 7-Bit-ASCII zuverlässig transportieren.
Quoted-Printable kodiert alle Bytes mit einem Wert größer als 127 (also Nicht-ASCII-Zeichen) sowie bestimmte Steuerzeichen in der Form =XX, wobei XX dem hexadezimalen Wert des Bytes entspricht. Druckbare ASCII-Zeichen bleiben unverändert erhalten, was die Lesbarkeit des kodierten Textes für Menschen weitgehend erhält.
Die Funktion ist vor allem beim manuellen Aufbau von MIME-E-Mail-Nachrichten nützlich, wenn Nachrichteninhalte (z. B. Texte mit Umlauten oder anderen nicht-ASCII-Zeichen) für den E-Mail-Transport kodiert werden müssen. Für den umgekehrten Weg – also die Dekodierung von Quoted-Printable zurück in einen 8-Bit-String – steht imap_qprint() zur Verfügung.
Hinweis: Diese Funktion gehört zur IMAP-Erweiterung (ext/imap), obwohl sie inhaltlich nichts mit dem IMAP-Protokoll selbst zu tun hat. Die Erweiterung muss daher aktiviert sein, auch wenn kein IMAP-Server verwendet wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu kodierende 8-Bit-Eingabestring. Kann beliebige Binärdaten oder Text mit Nicht-ASCII-Zeichen enthalten. |
Rückgabewert
quoted-printable-kodierten String zurück. Im Fehlerfall wird false zurückgegeben.Beispiele
Umlaut-Text in Quoted-Printable kodieren
<?php
// Einfacher Text mit deutschen Umlauten
$text = 'Hallo Welt! Ä, Ö, Ü und ß sind dabei.';
$encoded = imap_8bit($text);
echo $encoded;
Hin- und Rückkonvertierung mit imap_qprint
<?php
// Original-String mit Sonderzeichen
$original = 'Preis: 29,99 € – Angebot!';
// In Quoted-Printable kodieren
$encoded = imap_8bit($original);
echo 'Kodiert: ' . $encoded . PHP_EOL;
// Wieder dekodieren
$decoded = imap_qprint($encoded);
echo 'Dekodiert: ' . $decoded . PHP_EOL;
// Vergleich
echo 'Identisch: ' . ($original === $decoded ? 'Ja' : 'Nein') . PHP_EOL;
// Wichtig · Fallstricke
Abhängigkeit von ext/imap: Obwohl imap_8bit() rein string-basiert arbeitet, ist sie Teil der IMAP-Erweiterung. Diese muss in der PHP-Installation aktiviert sein (z. B. durch extension=imap in der php.ini), sonst steht die Funktion nicht zur Verfügung.
Zeilenlängenbegrenzung: Quoted-Printable schreibt vor, dass Zeilen nicht länger als 76 Zeichen sein sollen. imap_8bit() kümmert sich automatisch um diese Zeilenumbrüche (Soft Line Breaks mit = am Zeilenende).
Alternative: Wer die IMAP-Erweiterung nicht verwenden möchte, kann die Kodierung manuell mit quoted_printable_encode() (ab PHP 5.3.0) durchführen, die keine externe Erweiterung benötigt.