Start · Sprachen · PHP · Referenz · mb_list_encodings

mb_list_encodings

Funktion

Gibt ein Array mit allen vom <code>mbstring</code>-Modul unterstützten Zeichenkodierungen zurück.

seit PHP 4.0.6 Kategorie: string

Signatur

mb_list_encodings(): array

Beschreibung

mb_list_encodings() liefert eine vollständige Liste aller Zeichenkodierungen, die die PHP-Extension mbstring kennt und verarbeiten kann. Das zurückgegebene Array enthält die Kodierungsnamen als Strings (z. B. UTF-8, ISO-8859-1, Shift_JIS).

Die Funktion ist besonders nützlich, wenn man prüfen möchte, ob eine bestimmte Kodierung auf dem aktuellen System verfügbar ist, bevor man sie an andere mb_*-Funktionen übergibt. Damit lassen sich plattformabhängige Fehler vermeiden, die entstehen, wenn eine gewünschte Kodierung nicht unterstützt wird.

Typische Einsatzgebiete sind Validierungsroutinen, dynamische Auswahlmenüs in Konfigurationsoberflächen oder automatische Tests, die prüfen, ob eine bestimmte Umgebung die benötigten Kodierungen mitbringt.

Die Ausgabe variiert je nach PHP-Konfiguration und Build-Optionen von libmbfl. Es empfiehlt sich daher, nie fest davon auszugehen, dass eine bestimmte Kodierung verfügbar ist, sondern dies zur Laufzeit über diese Funktion abzusichern.

Rückgabewert

Typ
array
Beschreibung
Ein indiziertes Array von Strings, das alle vom mbstring-Modul unterstützten Kodierungsnamen enthält. Die Reihenfolge der Einträge ist implementationsabhängig und sollte nicht als stabil angesehen werden.

Beispiele

Alle unterstützten Kodierungen ausgeben

<?php
$encodings = mb_list_encodings();
echo 'Anzahl unterstützter Kodierungen: ' . count($encodings) . PHP_EOL;
foreach ($encodings as $enc) {
    echo $enc . PHP_EOL;
}
Anzahl unterstützter Kodierungen: 87 UTF-8 UTF-7 ASCII EUC-JP ...

Prüfen, ob eine bestimmte Kodierung verfügbar ist

<?php
/**
 * Prüft (case-insensitiv), ob eine Kodierung von mbstring unterstützt wird.
 */
function is_encoding_supported(string $encoding): bool
{
    $supported = array_map('strtolower', mb_list_encodings());
    return in_array(strtolower($encoding), $supported, true);
}

$toCheck = 'Windows-1252';
if (is_encoding_supported($toCheck)) {
    echo "Kodierung '{$toCheck}' wird unterstützt." . PHP_EOL;
} else {
    echo "Kodierung '{$toCheck}' ist NICHT verfügbar." . PHP_EOL;
}
Kodierung 'Windows-1252' wird unterstützt.

Kodierungen als JSON-kompatible Liste für eine API-Antwort

<?php
header('Content-Type: application/json; charset=UTF-8');

$encodings = mb_list_encodings();
sort($encodings); // alphabetisch sortieren
echo json_encode(['supported_encodings' => $encodings], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
{ "supported_encodings": [ "ASCII", "BASE64", "EUC-CN", ... ] }

// Wichtig · Fallstricke

Hinweis zur Groß-/Kleinschreibung: Die zurückgegebenen Kodierungsnamen können in Großbuchstaben, Kleinbuchstaben oder gemischter Schreibweise vorliegen. Beim Vergleich sollte daher immer strtolower() oder strcasecmp() verwendet werden.

Abhängigkeit von der PHP-Umgebung: Die Liste der verfügbaren Kodierungen kann je nach Betriebssystem, PHP-Version und Kompilierungsoptionen variieren. Verlasse dich nicht darauf, dass eine Kodierung auf allen Systemen vorhanden ist.

Voraussetzung: Die mbstring-Extension muss installiert und aktiviert sein. Ist sie nicht verfügbar, existiert die Funktion nicht und führt zu einem fatalen Fehler. Mit extension_loaded('mbstring') lässt sich die Verfügbarkeit vorab prüfen.