Start · Sprachen · PHP · Referenz · mb_encoding_aliases

mb_encoding_aliases

Funktion

Gibt alle bekannten Aliase einer Zeichenkodierung als Array zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

mb_encoding_aliases(string $encoding): array

Beschreibung

mb_encoding_aliases() liefert ein indiziertes Array mit allen alternativen Bezeichnungen (Aliasen), unter denen eine bestimmte Zeichenkodierung in der mbstring-Erweiterung bekannt ist. Jede Kodierung kann neben ihrem Hauptnamen mehrere alternative Namen besitzen, unter denen sie ebenfalls akzeptiert wird.

Die Funktion ist nützlich, wenn man prüfen möchte, welche Schreibweisen oder Synonyme für eine Kodierung gültig sind – beispielsweise um Benutzereingaben zu normalisieren oder zu validieren, bevor man sie an mbstring-Funktionen weitergibt. So hat etwa UTF-8 Aliase wie utf8 oder UTF8.

Im Fehlerfall – wenn die übergebene Kodierung nicht bekannt ist – wird false zurückgegeben und ein Fehler der Stufe E_WARNING ausgelöst. Die zurückgegebenen Alias-Namen können direkt in anderen mbstring-Funktionen wie mb_convert_encoding() verwendet werden.

Parameter

Name Typ Default Beschreibung
$encoding Pflicht string Der Hauptname der Zeichenkodierung, deren Aliase ermittelt werden sollen, z. B. UTF-8, ISO-8859-1 oder Shift_JIS. Groß-/Kleinschreibung wird von mbstring toleriert.

Rückgabewert

Typ
array|false
Beschreibung
Ein indiziertes Array mit allen bekannten Aliasen der angegebenen Kodierung. Gibt false zurück, wenn die Kodierung unbekannt ist, und löst dabei eine E_WARNING aus.

Beispiele

Aliase von UTF-8 ausgeben

<?php
$aliases = mb_encoding_aliases('UTF-8');
if ($aliases !== false) {
    echo 'Aliase für UTF-8:' . PHP_EOL;
    foreach ($aliases as $alias) {
        echo '  - ' . $alias . PHP_EOL;
    }
} else {
    echo 'Unbekannte Kodierung.';
}
Aliase für UTF-8: - utf8 - UTF8

Benutzereingabe einer Kodierung normalisieren

<?php
function normalizeEncoding(string $userInput): string|false {
    $knownEncodings = mb_list_encodings();
    foreach ($knownEncodings as $encoding) {
        if (strcasecmp($encoding, $userInput) === 0) {
            return $encoding;
        }
        $aliases = mb_encoding_aliases($encoding);
        if ($aliases !== false) {
            foreach ($aliases as $alias) {
                if (strcasecmp($alias, $userInput) === 0) {
                    return $encoding;
                }
            }
        }
    }
    return false;
}

$canonical = normalizeEncoding('utf8');
echo $canonical !== false
    ? 'Kanonischer Name: ' . $canonical
    : 'Kodierung nicht gefunden.';
Kanonischer Name: UTF-8

// Wichtig · Fallstricke

Die Funktion gibt bei unbekannter Kodierung false zurück und löst eine E_WARNING aus. Um die Warnung zu unterdrücken, kann der Aufruf mit @ vorangestellt werden, besser jedoch vorher prüfen, ob die Kodierung in mb_list_encodings() enthalten ist.

Zu beachten ist, dass die zurückgegebene Liste nur die Aliase enthält, nicht den Hauptnamen selbst. Ein Vergleich sollte also beide Mengen berücksichtigen.