Как преобразовать специальные символы в стандартные символы?

Я ищу способ конвертировать символы, такие как āžšķūņ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 (если доступно).