Start · Sprachen · PHP · Referenz · imap_8bit

imap_8bit

Funktion

Konvertiert einen 8-Bit-String in einen <code>quoted-printable</code>-kodierten String.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_8bit(string $string): string|false

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

Typ
string|false
Beschreibung
Gibt den 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;
Hallo Welt! =C3=84, =C3=96, =C3=9C und =C3=9F sind dabei.

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;
Kodiert: Preis: 29,99 =E2=82=AC =E2=80=93 Angebot! Dekodiert: Preis: 29,99 € – Angebot! Identisch: Ja

// 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.