// Translit each and every char to ASCII
$string = 'Москва́';
$string = Transliterator::create('Any-Latin; Latin-ASCII')->transliterate($string);
print $string;
// the result is "Moskva"
(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)
Transliterator::create -- transliterator_create — Transliterator を作成する
オブジェクト指向型
$id
, int $direction
= Transliterator::FORWARD): ?Transliterator手続き型
ID を指定して Transliterator をオープンします。
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
id
ID を指定します。 全ての登録済みの transliterator ID は、 Transliterator::listIDs() を使って取得できます。
direction
方向。デフォルトは Transliterator::FORWARD です。 Transliterator::REVERSE も指定できます。
成功した場合に Transliterator オブジェクト、失敗した場合に
null
を返します。
// Translit each and every char to ASCII
$string = 'Москва́';
$string = Transliterator::create('Any-Latin; Latin-ASCII')->transliterate($string);
print $string;
// the result is "Moskva"
A good example of create for non latin languages is Turkish.
There both upper case I character and lowercase ı character which makes other strtolower kind of functions useless.
$text = "Iğdır";
echo Transliterator::create("tr-Lower")->transliterate($text);
will return the correct result ığdır, not iğdır .
If you want to go deeper into what is going on, read the ICU projects docs: http://userguide.icu-project.org/transforms/general
This API call is basically just wrapper around ICU Transliteration.