Signatur
Beschreibung
mb_http_input() gibt die erkannte Zeichenkodierung der HTTP-Eingabedaten zurück. Die Funktion liefert Informationen darüber, welche Kodierung PHP für die verschiedenen Arten von HTTP-Eingaben (z. B. GET-Parameter, POST-Daten, HTTP-Header) angenommen hat.
Der Parameter type steuert, für welchen Eingabetyp die Kodierung abgefragt wird. Wird er weggelassen oder als leerer String übergeben, verhält sich die Funktion wie bei 'I' (gesamte Eingabe). Mögliche Werte sind: 'G' für GET-, 'P' für POST-, 'C' für Cookie-, 'S' für Script-, 'I' für gesamte Eingabe und 'L' für eine Liste aller erkannten Kodierungen.
Die Funktion ist vor allem dann nützlich, wenn mbstring.encoding_translation in der php.ini aktiviert ist und PHP automatisch Zeichenkodierungen der HTTP-Eingaben konvertiert. In diesem Kontext kann mb_http_input() zur Diagnose und Überprüfung eingesetzt werden, welche Eingabekodierung tatsächlich erkannt wurde.
In modernen Anwendungen wird diese Funktion selten direkt benötigt, da Eingaben in der Regel als UTF-8 angenommen werden. Sie ist jedoch hilfreich bei der Fehlersuche in Legacy-Systemen oder bei der Arbeit mit mehrsprachigen Anwendungen, die unterschiedliche Zeichensätze verarbeiten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type | string | "" | Gibt den Eingabetyp an, dessen Kodierung abgefragt werden soll. Erlaubte Werte: 'G' (GET), 'P' (POST), 'C' (Cookie), 'S' (Script), 'I' (gesamte Eingabe, Standard), 'L' (Liste aller erkannten Kodierungen als Array). |
Rückgabewert
'L' ein array mit allen erkannten Kodierungen zurück. Bei allen anderen Typen wird ein string mit dem Kodierungsnamen zurückgegeben (z. B. 'UTF-8'). Gibt false zurück, wenn keine Kodierung erkannt wurde oder die Funktion keinen HTTP-Eingabekontext findet (z. B. beim Aufruf über die CLI).Beispiele
Erkannte Kodierung der POST-Eingabe ausgeben
<?php
// Gibt die erkannte Zeichenkodierung der POST-Daten aus
$encoding = mb_http_input('P');
if ($encoding !== false) {
echo 'POST-Eingabekodierung: ' . $encoding;
} else {
echo 'Keine Kodierung erkannt (z. B. kein POST-Kontext).';
}
Alle erkannten Eingabekodierungen auflisten
<?php
// Gibt eine Liste aller erkannten HTTP-Eingabekodierungen zurück
$encodings = mb_http_input('L');
if (is_array($encodings)) {
echo 'Erkannte Kodierungen:' . PHP_EOL;
foreach ($encodings as $encoding) {
echo '- ' . $encoding . PHP_EOL;
}
} else {
echo 'Keine Kodierungsliste verfügbar.';
}
Eingabekodierung im Kontext von mbstring.encoding_translation prüfen
<?php
// Nützlich, wenn mbstring.encoding_translation = On in php.ini gesetzt ist
// und PHP automatisch HTTP-Eingaben konvertiert.
// Ziel-Kodierung setzen
mb_internal_encoding('UTF-8');
// Erkannte GET-Kodierung abfragen
$getEncoding = mb_http_input('G');
echo 'GET-Eingabekodierung: ' . ($getEncoding !== false ? $getEncoding : 'nicht erkannt');
// Erkannte POST-Kodierung abfragen
$postEncoding = mb_http_input('P');
echo PHP_EOL . 'POST-Eingabekodierung: ' . ($postEncoding !== false ? $postEncoding : 'nicht erkannt');
// Wichtig · Fallstricke
Achtung: mb_http_input() liefert sinnvolle Ergebnisse nur dann, wenn die mbstring-Erweiterung korrekt konfiguriert ist und tatsächlich HTTP-Eingaben verarbeitet wurden. Bei Ausführung über die Kommandozeile (CLI) wird in der Regel false zurückgegeben.
Die Funktion erkennt die Kodierung automatisch auf Basis der HTTP-Header (z. B. Content-Type). Sie führt selbst keine Konvertierung durch – das übernimmt PHP intern, wenn mbstring.encoding_translation in der php.ini auf On gesetzt ist.
In modernen Projekten, die durchgängig UTF-8 verwenden, ist diese Funktion meist nicht erforderlich. Für neue Projekte empfiehlt sich stattdessen, Eingaben konsequent als UTF-8 zu erwarten und zu validieren.