Signatur
Beschreibung
transliterator_create_inverse() erzeugt einen neuen Transliterator, der die Umwandlung des übergebenen Transliterators in umgekehrter Richtung durchführt. Wurde beispielsweise ein Transliterator erstellt, der lateinische Zeichen in kyrillische umwandelt, liefert die Umkehrung einen Transliterator, der kyrillische Zeichen zurück in lateinische konvertiert.
Diese Funktion ist besonders nützlich, wenn bidirektionale Transkriptionen benötigt werden, ohne dass eine separate Transliterator-Regel-Zeichenkette für die Gegenrichtung definiert werden muss. Sie setzt intern auf die ICU-Bibliothek auf, welche die Umkehrbarkeit bestimmter Transliterations-Regeln unterstützt.
Nicht jeder Transliterator ist umkehrbar. Handelt es sich um einen Transliterator, der keine Umkehrung unterstützt, gibt die Funktion false zurück. In diesem Fall kann über intl_get_error_message() eine Fehlermeldung abgerufen werden.
Die Funktion ist die prozedurale Variante der Methode Transliterator::createInverse(). Beide Varianten verhalten sich identisch.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $transliterator Pflicht | Transliterator | Das Transliterator-Objekt, dessen inverse Variante erstellt werden soll. |
Rückgabewert
Transliterator-Objekt zurück, das die umgekehrte Transliteration des Eingabe-Transliterators durchführt. Im Fehlerfall (z. B. wenn die Umkehrung nicht unterstützt wird) wird false zurückgegeben.Beispiele
Lateinisch ↔ Kyrillisch mit inversem Transliterator
<?php
// Erstellt einen Transliterator: Lateinisch → Kyrillisch
$trans = transliterator_create('Latin-Cyrillic');
if ($trans === false) {
die('Konnte Transliterator nicht erstellen: ' . intl_get_error_message());
}
$text = 'Privet';
$kyrillic = transliterator_transliterate($trans, $text);
echo 'Kyrillisch: ' . $kyrillic . PHP_EOL;
// Erstellt den inversen Transliterator: Kyrillisch → Lateinisch
$inverseTrans = transliterator_create_inverse($trans);
if ($inverseTrans === false) {
die('Konnte inversen Transliterator nicht erstellen: ' . intl_get_error_message());
}
$latin = transliterator_transliterate($inverseTrans, $kyrillic);
echo 'Zurück zu Lateinisch: ' . $latin . PHP_EOL;
Fehlerbehandlung bei nicht umkehrbarem Transliterator
<?php
// Ein einfacher, möglicherweise nicht umkehrbarer Transliterator
$trans = transliterator_create('Any-Lower');
if ($trans === false) {
die('Konnte Transliterator nicht erstellen.');
}
$inverseTrans = transliterator_create_inverse($trans);
if ($inverseTrans === false) {
echo 'Fehler: ' . intl_get_error_message() . PHP_EOL;
} else {
echo 'Inverser Transliterator erfolgreich erstellt.' . PHP_EOL;
}
// Wichtig · Fallstricke
Umkehrbarkeit: Nicht alle Transliteratoren sind umkehrbar. ICU unterstützt die Umkehrung nur für Transliteratoren, deren Regeln bidirektional definiert sind. Ein rein auf Kleinschreibung ausgerichteter Transliterator (wie Any-Lower) ist beispielsweise nicht sinnvoll umkehrbar, da die ursprüngliche Großschreibinformation verloren geht.
Abhängigkeit von ICU: Das Verhalten dieser Funktion hängt von der installierten ICU-Bibliotheksversion ab. Es empfiehlt sich, die Rückgabe stets auf false zu prüfen und im Fehlerfall intl_get_error_message() zu verwenden.
Die objektorientierte Entsprechung ist Transliterator::createInverse().