Signatur
Beschreibung
quoted_printable_decode() wandelt einen nach dem Quoted-Printable-Verfahren (RFC 2045) kodierten String zurück in seinen ursprünglichen 8-Bit-Binärstring. Quoted-Printable ist eine Kodierung, bei der alle Bytes außer druckbaren ASCII-Zeichen als =XX (Hexadezimal) dargestellt werden, um die sichere Übertragung über Protokolle zu gewährleisten, die nur 7-Bit-ASCII unterstützen (z. B. ältere E-Mail-Systeme).
Diese Funktion ist besonders nützlich beim Verarbeiten von empfangenen E-Mails, deren Header oder Body im Quoted-Printable-Format vorliegen. Zusammen mit quoted_printable_encode() bildet sie ein vollständiges Werkzeug für die Verarbeitung solcher Inhalte.
Zeilenumbrüche werden gemäß RFC 2045 behandelt: Ein = am Ende einer Zeile (sogenannter Soft Line Break) wird entfernt und die Zeile logisch zusammengefügt. Reguläre CRLF-Zeilenenden (=0D=0A) werden korrekt dekodiert.
Im Unterschied zu imap_qprint() erfordert diese Funktion keine IMAP-Erweiterung und ist daher in jeder PHP-Installation einsetzbar.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Quoted-Printable-kodierte Eingabe-String, der dekodiert werden soll. |
Rückgabewert
Beispiele
Einfaches Dekodieren eines Quoted-Printable-Strings
<?php
$encoded = 'Sch=C3=B6nes Wetter heute!';
$decoded = quoted_printable_decode($encoded);
echo $decoded;
// Ausgabe: Schönes Wetter heute!
Dekodieren eines E-Mail-Bodys mit Soft Line Breaks
<?php
// E-Mail-Body mit Quoted-Printable-Kodierung und Soft Line Break (= am Zeilenende)
$encoded = "Dies ist ein langer Text, der =\r\n"
. "umgebrochen wurde.\r\n"
. "Und hier kommen Umlaute: =C3=A4, =C3=B6, =C3=BC.";
$decoded = quoted_printable_decode($encoded);
echo $decoded;
Roundtrip: Kodieren und Dekodieren
<?php
$original = 'PHP ist großartig! Ä, Ö, Ü und ß funktionieren.';
$encoded = quoted_printable_encode($original);
$decoded = quoted_printable_decode($encoded);
var_dump($original === $decoded);
echo 'Kodiert: ' . $encoded . PHP_EOL;
echo 'Dekodiert: ' . $decoded . PHP_EOL;
// Wichtig · Fallstricke
Zeichenkodierung: Die Funktion dekodiert rein auf Byte-Ebene und ist kodierungsunabhängig. Wenn der ursprüngliche Text UTF-8 war, liefert sie nach dem Dekodieren wieder einen gültigen UTF-8-String – vorausgesetzt, der kodierte String enthält korrekte UTF-8-Sequenzen.
Unterschied zu imap_qprint(): imap_qprint() ist funktional ähnlich, erfordert jedoch die aktivierte IMAP-PHP-Erweiterung. quoted_printable_decode() hat keine solche Abhängigkeit und ist daher zu bevorzugen.
Ungültige Eingaben: Ungültige Quoted-Printable-Sequenzen (z. B. =ZZ) werden nicht als Fehler behandelt, sondern in der Regel unverändert übernommen. Eine Validierung der Eingabe sollte daher bei unsicheren Quellen vorher erfolgen.