Signatur
Beschreibung
imap_qprint() konvertiert einen im Quoted-Printable-Format kodierten String in einen gewöhnlichen 8-Bit-String. Quoted Printable (QP) ist ein Übertragungsformat aus dem E-Mail-Bereich (RFC 2045), das sicherstellt, dass Binär- oder Sonderzeichendaten über 7-Bit-Kanäle übertragen werden können. Dabei werden nicht-ASCII-Zeichen als =XX dargestellt, wobei XX der hexadezimale Bytewert ist.
Typischerweise tritt Quoted-Printable-Kodierung bei E-Mail-Headern und -Body-Teilen auf, die über IMAP abgerufen werden. Mit imap_qprint() lassen sich solche kodierten Inhalte wieder in lesbare, native PHP-Strings umwandeln, bevor sie verarbeitet, gespeichert oder ausgegeben werden.
Die Funktion gehört zur IMAP-Erweiterung, ist jedoch auch dann nützlich, wenn man lediglich QP-kodierte Texte – unabhängig von einer aktiven IMAP-Verbindung – dekodieren möchte. Die inverse Operation (8-Bit nach QP) übernimmt imap_8bit().
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
// Typischer QP-kodierter Text aus einer E-Mail
$qpEncoded = 'Sehr geehrte Damen und Herren,=0A=0Adies ist ein Test.=0A=0AMit freundlichen Gr=C3=BC=C3=9Fen';
$decoded = imap_qprint($qpEncoded);
echo $decoded;
Dekodierung eines per IMAP abgerufenen E-Mail-Bodys
<?php
// Verbindung zum IMAP-Server herstellen
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'user@example.com', 'geheimesPasswort');
if ($imap) {
// Erste Nachricht abrufen
$structure = imap_fetchstructure($imap, 1);
// Prüfen ob Encoding = Quoted Printable (Wert 4)
if (isset($structure->encoding) && $structure->encoding === 4) {
$rawBody = imap_fetchbody($imap, 1, 1);
$decodedBody = imap_qprint($rawBody);
echo htmlspecialchars($decodedBody);
}
imap_close($imap);
}
// Wichtig · Fallstricke
Deprecation-Hinweis: Ab PHP 8.4 ist die IMAP-Erweiterung als veraltet markiert und wird in einer zukünftigen PHP-Version entfernt. Für neue Projekte empfiehlt es sich, auf alternative Bibliotheken wie ddeboer/imap oder andere IMAP-Clients umzusteigen.
Wenn das Encoding eines IMAP-Nachrichtenteils bekannt ist, sollte zunächst imap_fetchstructure() genutzt werden, um den Encoding-Typ zu prüfen (Wert 4 entspricht Quoted Printable), bevor imap_qprint() angewendet wird. Andernfalls kann es zu fehlerhaften Ausgaben kommen, wenn der Body z. B. Base64-kodiert ist.