Start · Sprachen · PHP · Referenz · recode_string

recode_string

Funktion

Kodiert einen String gemäß einer Recode-Anweisung von einem Zeichensatz in einen anderen um.

seit PHP 4.0.0 Kategorie: string

Signatur

recode_string(string $request, string $string): string|false

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

Typ
string|false
Beschreibung
Gibt den umkodierten String zurück. Im Fehlerfall (z. B. bei einer ungültigen Recode-Anweisung oder einem nicht konvertierbaren Zeichen) wird 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.';
}
Schöner Tag

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;
}
Konvertiert: Hello World

// 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.