Я ищу способ конвертировать символы, такие как āžšķūņrūķīš, в azskunrukis . Иными словами, заменить ā на a , ž с z и так далее. Есть ли что-нибудь встроенное, или я должен создать свою собственную «библиотеку» из-за символов?
Взгляните на возможности транслитерации iconv :
<?php $text = "This is the Euro symbol '€'."; echo 'Original : ', $text, PHP_EOL; echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL; echo 'IGNORE : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL; echo 'Plain : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL; ?>
В приведенном выше примере будет выведено нечто похожее:
Оригинал: это символ евро.
TRANSLIT: Это символ евро «EUR».
IGNORE: Это символ евро.
Обычная:
Примечание: iconv (): обнаружен незаконный символ в строке ввода. \ Iconv-example.php в строке 7
Это символ евро,
Текст вашего примера можно транслировать, используя:
$translit = iconv('UTF-8', 'US-ASCII//TRANSLIT', 'āžšķūņrūķīš');
Вот пример с предоставленным вами текстом: http://ideone.com/MJHvf
Я не уверен в каких-либо функциях, которые делают это напрямую, но есть некоторые реализации таблиц перевода, которые делают что-то подобное в комментариях на strtr
документации strtr
. Они в конечном итоге используют таблицу, которая непосредственно переводит каждый символ в эквивалент, т. Е. «Ž» => «z».
В качестве альтернативы iconv
вы можете проверить функции Normalize
расширения intl (если доступно).