Start · Sprachen · PHP · Referenz · transliterator_create

transliterator_create

Funktion

Erstellt ein <code>Transliterator</code>-Objekt anhand einer ICU-Transliterations-ID oder einer Regelzeichenkette.

seit PHP 5.4.0 Kategorie: string

Signatur

transliterator_create(string $id, int $direction = Transliterator::FORWARD): Transliterator|null

Beschreibung

transliterator_create() ist die prozedurale Variante von Transliterator::create() und erzeugt ein Objekt, mit dem Zeichenketten nach ICU-Transliterationsregeln umgewandelt werden können. Typische Anwendungsfälle sind die Umschrift von Kyrillisch oder Arabisch in lateinische Zeichen, die Entfernung von Diakritika (z. B. Akzente) oder die Normalisierung von Unicode-Text.

Der Parameter $id akzeptiert entweder eine vordefinierte ICU-Transliterations-ID (z. B. 'Any-Latin', 'Latin-ASCII', 'NFD; [:Nonspacing Mark:] Remove; NFC') oder eine selbst formulierte ICU-Regelzeichenkette. Die verfügbaren IDs lassen sich über Transliterator::listIDs() abrufen.

Mit dem optionalen Parameter $direction kann die Richtung der Transliteration gesteuert werden: Transliterator::FORWARD (Vorwärts, Standard) oder Transliterator::REVERSE (Rückwärts, sofern die Regeln dies unterstützen).

Nach dem Erstellen des Objekts wird die eigentliche Umwandlung mit transliterator_transliterate() bzw. Transliterator::transliterate() durchgeführt. Diese Funktion setzt die PHP-Erweiterung intl voraus.

Parameter

Name Typ Default Beschreibung
$id Pflicht string Eine ICU-Transliterations-ID (z. B. 'Any-Latin') oder eine benutzerdefinierte ICU-Regelzeichenkette, die das Transliterationsverhalten beschreibt.
$direction int Transliterator::FORWARD Richtung der Transliteration: Transliterator::FORWARD (vorwärts, Standard) oder Transliterator::REVERSE (rückwärts).

Rückgabewert

Typ
Transliterator|null
Beschreibung
Gibt bei Erfolg ein Transliterator-Objekt zurück. Im Fehlerfall (z. B. ungültige ID oder fehlende intl-Erweiterung) wird null zurückgegeben und ein Fehler ausgelöst.

Beispiele

Kyrillischen Text in lateinische Zeichen umschreiben

<?php
$transliterator = transliterator_create('Any-Latin');
if ($transliterator === null) {
    die('Transliterator konnte nicht erstellt werden.');
}

$russisch = 'Привет, мир!';
$latein   = transliterator_transliterate($transliterator, $russisch);
echo $latein;
Privet, mir!

Diakritika entfernen (Akzente normalisieren)

<?php
// NFD zerlegt Zeichen, dann werden Combining Marks entfernt, NFC normalisiert erneut
$transliterator = transliterator_create('NFD; [:Nonspacing Mark:] Remove; NFC');
if ($transliterator === null) {
    die('Transliterator konnte nicht erstellt werden.');
}

$text      = 'Héllo Wörld – Ñoño';
$normiert  = transliterator_transliterate($transliterator, $text);
echo $normiert;
Hello World – Nono

Unicode-Text in ASCII-kompatible Zeichen umwandeln

<?php
// Kombinierte Regel: erst Any-Latin, dann Latin zu ASCII
$transliterator = transliterator_create('Any-Latin; Latin-ASCII');
if ($transliterator === null) {
    die('Transliterator konnte nicht erstellt werden.');
}

$text   = 'Ärger mit Ümlauten und Ößerreich';
$ascii  = transliterator_transliterate($transliterator, $text);
echo $ascii;
Arger mit Umlauten und Osserreich

// Wichtig · Fallstricke

Voraussetzung: Die PHP-Erweiterung intl muss installiert und aktiviert sein (extension=intl in der php.ini). Andernfalls ist die Funktion nicht verfügbar.

Fehlerbehandlung: Bei einem ungültigen $id-Wert gibt die Funktion null zurück und erzeugt einen E_WARNING. Zusätzliche Fehlerdetails sind über intl_get_error_message() abrufbar.

Rückwärts-Transliteration: Nicht alle Transliteratoren unterstützen Transliterator::REVERSE. Bei nicht umkehrbaren Regelmengen schlägt die Erstellung fehl.

Performance: Das Erstellen eines Transliterator-Objekts ist vergleichsweise aufwändig. Bei wiederholter Verwendung sollte das Objekt gecacht oder als Klassenmember gespeichert werden.