Как конвертировать специальные символы в стандартные символы? - PullRequest
3 голосов
/ 01 июня 2011

Я ищу способ преобразования символов типа āžšķūņrūķīš в azskunrukis . Другими словами, заменить а на a , на z и т. Д. Есть ли что-то встроенное, или я должен создать свою собственную «библиотеку» символов to-to?

Ответы [ 3 ]

5 голосов
/ 01 июня 2011

Посмотрите на возможности транслитерации 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;

?>

Приведенный выше пример выведет что-то похожее на:

Оригинал: это символ евро '€'.
ПЕРЕВОД: Это символ евро 'EUR'.
ИГНОР. Это символ евро.
Обычная:
Примечание: iconv (): обнаружен недопустимый символ во входной строке в. \ Iconv-example.php в строке 7
Это символ евро '

Ваш пример текста можно транслитерировать с помощью:

$translit = iconv('UTF-8', 'US-ASCII//TRANSLIT', 'āžšķūņrūķīš');

Вот пример с предоставленным вами текстом: http://ideone.com/MJHvf

1 голос
/ 02 июня 2011

В качестве альтернативы iconv вы можете проверить функции Normalize расширения intl (если доступно).

1 голос
/ 01 июня 2011

Я не уверен ни в каких функциях, которые делают это напрямую, но есть некоторые реализации таблиц перевода, которые делают что-то подобное в комментариях на странице документации strtr . В итоге они используют таблицу, которая непосредственно переводит каждый символ в его эквивалент, то есть "ž" => "z".

...