Signatur
Beschreibung
recode_string() konvertiert den übergebenen String $string entsprechend der Recode-Anweisung $request in eine andere Zeichenkodierung. Die Funktion nutzt die GNU-Recode-Bibliothek, die eine Vielzahl von Zeichensätzen und Kodierungen (z. B. ISO-8859-1, UTF-8, ASCII, Base64, Quoted-Printable u. v. m.) unterstützt.
Die Anweisung in $request hat die Form von..nach, also z. B. ISO-8859-1..UTF-8. Es können auch komplexe Umwandlungsketten angegeben werden, bei denen mehrere Kodierungsschritte mit .. verkettet werden.
Die Funktion ist besonders nützlich, wenn ältere Anwendungen oder externe Datenquellen noch mit Legacy-Kodierungen wie ISO-8859-x arbeiten und eine Konvertierung in modernere Zeichensätze notwendig ist. Sie ist allerdings als deprecated einzustufen und in PHP 8.0 entfernt worden – für neue Projekte sollten mb_convert_encoding() oder iconv() bevorzugt werden.
Die Funktion setzt voraus, dass PHP mit der GNU-Recode-Bibliothek kompiliert wurde (--with-recode). Ist dies nicht der Fall, steht sie nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $request Pflicht | string | Die Recode-Anweisung, die die Quell- und Zielkodierung beschreibt, z. B. ISO-8859-1..UTF-8. Mehrere Kodierungsschritte können mit .. verkettet werden. |
|
| $string Pflicht | string | Der umzukodierende Eingabe-String. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache Konvertierung von ISO-8859-1 nach UTF-8
<?php
// ISO-8859-1-kodierter String (enthält deutsches Umlaut 'ü')
$iso_string = "Sch\xF6ner Tag";
$utf8_string = recode_string('ISO-8859-1..UTF-8', $iso_string);
if ($utf8_string !== false) {
echo $utf8_string; // Gibt 'Schöner Tag' in UTF-8 aus
} else {
echo 'Konvertierung fehlgeschlagen.';
}
Konvertierung mit Fehlerbehandlung
<?php
$input = "Hello World";
$result = recode_string('ASCII..UTF-8', $input);
if ($result === false) {
echo 'Fehler bei der Recode-Konvertierung.';
} else {
echo 'Konvertiert: ' . $result;
}
// Wichtig · Fallstricke
Deprecated / Entfernt: recode_string() ist seit PHP 7.4 als veraltet (deprecated) markiert und wurde in PHP 8.0 vollständig entfernt. Für neue Projekte und bei der Migration auf PHP 8.x sollten stattdessen mb_convert_encoding() (ext/mbstring) oder iconv() verwendet werden, die ohne externe GNU-Recode-Bibliothek auskommen und deutlich breiter unterstützt werden.
Die Funktion steht nur zur Verfügung, wenn PHP mit der Option --with-recode kompiliert wurde. Ein Aufruf ohne diese Erweiterung führt zu einem fatalen Fehler.
Bei der Verarbeitung von Benutzereingaben sollte die korrekte Kodierung immer validiert werden, da fehlerhafte oder gemischte Zeichensätze zu unerwarteten Ausgaben oder Sicherheitsproblemen (z. B. bei SQL-Abfragen oder HTML-Ausgaben) führen können.