Signatur
Beschreibung
imap_mutf7_to_utf8() konvertiert einen String aus der modifizierten UTF-7-Kodierung (mUTF-7) nach UTF-8. Modifiziertes UTF-7 wird primär bei IMAP-Postfachnamen verwendet, da das IMAP-Protokoll (RFC 2060 / RFC 3501) nicht-ASCII-Zeichen in Ordnernamen in diesem Format überträgt.
Im Gegensatz zum Standard-UTF-7 (RFC 2152) verwendet mUTF-7 das Zeichen & anstelle von + als Escape-Zeichen und lässt einige Zeichen unterschiedlich kodiert. Daher kann kein normaler UTF-7-Dekoder verwendet werden – diese Funktion ist speziell für das IMAP-Protokoll ausgelegt.
Typischer Anwendungsfall ist die lesbare Darstellung von IMAP-Ordnernamen, die Umlaute oder andere Nicht-ASCII-Zeichen enthalten, z. B. wenn ein Ordner serverseitig als &AMQ- zurückgeliefert wird und als Ä angezeigt werden soll.
Die Gegenfunktion zum Kodieren von UTF-8 zurück nach mUTF-7 lautet imap_utf8_to_mutf7().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der im modifizierten UTF-7 (mUTF-7) kodierte Eingabe-String, typischerweise ein IMAP-Ordnername. |
Rückgabewert
false wenn der Eingabe-String kein gültiges mUTF-7 ist oder die Konvertierung fehlschlägt.Beispiele
Einfachen mUTF-7-IMAP-Ordnernamen dekodieren
<?php
// IMAP-Server liefert Ordnernamen in mUTF-7
$mutf7FolderName = 'INBOX.&AMQ-rger'; // enthält 'Ärger'
$utf8FolderName = imap_mutf7_to_utf8($mutf7FolderName);
if ($utf8FolderName !== false) {
echo 'Ordnername: ' . $utf8FolderName;
} else {
echo 'Konvertierung fehlgeschlagen.';
}
IMAP-Ordnerliste mit lesbaren Namen ausgeben
<?php
$mailbox = '{imap.example.com:143}INBOX';
$username = 'user@example.com';
$password = 'secret';
$imap = imap_open($mailbox, $username, $password);
if ($imap === false) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
$folders = imap_list($imap, '{imap.example.com:143}', '*');
if (is_array($folders)) {
foreach ($folders as $folder) {
// Serverseitig gelieferter Name ist mUTF-7-kodiert
$readableName = imap_mutf7_to_utf8($folder);
echo $readableName !== false ? $readableName : $folder;
echo PHP_EOL;
}
}
imap_close($imap);
Hin- und Rückkonvertierung prüfen
<?php
$original = 'Postfach.Entwürfe';
// UTF-8 → mUTF-7 → UTF-8
$encoded = imap_utf8_to_mutf7($original);
echo 'Kodiert: ' . $encoded . PHP_EOL;
$decoded = imap_mutf7_to_utf8($encoded);
echo 'Dekodiert: ' . $decoded . PHP_EOL;
echo 'Identisch: ' . ($original === $decoded ? 'Ja' : 'Nein') . PHP_EOL;
// Wichtig · Fallstricke
Erweiterung erforderlich: imap_mutf7_to_utf8() ist Teil der IMAP-Erweiterung (ext/imap), die auf dem System kompiliert und aktiviert sein muss. Ab PHP 8.4 ist die IMAP-Erweiterung als PECL-Paket ausgelagert und nicht mehr im PHP-Core enthalten.
Rückgabewert prüfen: Wenn der Eingabe-String kein gültiges mUTF-7 enthält, gibt die Funktion false zurück. Es empfiehlt sich stets, den Rückgabewert mit === false zu prüfen, bevor der String weiterverwendet wird.
Nur für mUTF-7, nicht für Standard-UTF-7: Die Funktion verarbeitet ausschließlich das modifizierte UTF-7-Format gemäß RFC 3501, nicht das Standard-UTF-7 (RFC 2152). Für andere Konvertierungen sollte mb_convert_encoding() in Betracht gezogen werden.