Signatur
Beschreibung
imap_utf7_decode() konvertiert einen String, der im modifizierten UTF-7-Format gemäß RFC 2060 (IMAP4) kodiert ist, zurück in einen lesbaren ISO-8859-1-String. Das modifizierte UTF-7-Format wird in IMAP-Protokollen vor allem für Ordnernamen verwendet, die Sonderzeichen oder Nicht-ASCII-Zeichen enthalten.
Das modifizierte UTF-7 unterscheidet sich vom Standard-UTF-7 (RFC 2152): Anstatt des +-Zeichens als Escape-Sequenz wird eine Kombination aus & und - verwendet. Beispielsweise wird der Ordnername Gesendete Elemente im IMAP-Protokoll häufig als Gesendete Elemente oder mit encodierten Sonderzeichen übertragen.
Diese Funktion ist besonders nützlich, wenn IMAP-Ordnernamen ausgelesen werden und diese für die Anzeige in einer Web-Anwendung oder einem E-Mail-Client in lesbarer Form benötigt werden. Das Gegenstück zum Kodieren ist die Funktion imap_utf7_encode().
Hinweis: Die IMAP-Erweiterung ist seit PHP 8.4 als veraltet markiert. Es wird empfohlen, auf alternative Bibliotheken wie php-imap oder die IMAP-Klassen des Symfony Mailer umzusteigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der im modifizierten UTF-7-Format (RFC 2060) kodierte Eingabe-String, der dekodiert werden soll. |
Rückgabewert
false zurückgegeben.Beispiele
IMAP-Ordnernamen dekodieren
<?php
// Typischer modifizierter-UTF-7-String wie er im IMAP-Protokoll vorkommt
$encodedFolder = 'INBOX.Gel&APY-scht'; // kodierter Ordnername
$decoded = imap_utf7_decode($encodedFolder);
if ($decoded !== false) {
echo 'Dekodierter Ordnername: ' . $decoded;
} else {
echo 'Dekodierung fehlgeschlagen.';
}
Hin- und Rück-Konvertierung mit imap_utf7_encode
<?php
// Original-String mit Sonderzeichen
$original = 'Gesendete Elemente (Müll)';
// Kodieren in modifiziertes UTF-7
$encoded = imap_utf7_encode($original);
echo 'Kodiert: ' . $encoded . PHP_EOL;
// Wieder dekodieren
$decoded = imap_utf7_decode($encoded);
echo 'Dekodiert: ' . $decoded . PHP_EOL;
// Vergleich
echo 'Identisch: ' . ($original === $decoded ? 'Ja' : 'Nein') . PHP_EOL;
// Wichtig · Fallstricke
Deprecation: Die gesamte IMAP-Erweiterung (ext/imap) wurde in PHP 8.4 als veraltet markiert und erzeugt entsprechende Deprecation-Warnungen. Es wird empfohlen, auf alternative Bibliotheken umzusteigen.
Das modifizierte UTF-7-Format (RFC 2060) ist nicht identisch mit dem Standard-UTF-7 (RFC 2152). Verwechslungen führen zu falschen Kodierungen. In IMAP wird & als Escape-Zeichen statt + benutzt, und &- steht für ein literales &.
Der Rückgabewert ist ISO-8859-1 kodiert, nicht UTF-8. Für die Weiterverarbeitung in modernen PHP-Anwendungen sollte ggf. eine anschließende Konvertierung mit mb_convert_encoding() oder utf8_encode() erfolgen.