PHP

Транслит (PHP)

Создавая функцию автоматического транслита с русского в английский, нужно думать прежде всего о том, чтобы этот транслит было удобно воспринимать при чтении. Поэтому лучше не делать попыток сделать «английский вариант» русской буквы уникальной.
С русского на английский

Самый простой и удобный вариант, создать 2 массив. Первый с русским алфавитом, второй с соответствующей каждой русской букве английской транслитерации.
<?php

// Функция русского текста в английскую транслитерацию
function rus2translit($text)
{
    // Русский алфавит
    $rus_alphabet = array(
        'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й',
        'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф',
        'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
        'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й',
        'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф',
        'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'
    );
    
    // Английская транслитерация
    $rus_alphabet_translit = array(
        'A', 'B', 'V', 'G', 'D', 'E', 'IO', 'ZH', 'Z', 'I', 'I',
        'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F',
        'H', 'C', 'CH', 'SH', 'SH', '`', 'Y', '`', 'E', 'IU', 'IA',
        'a', 'b', 'v', 'g', 'd', 'e', 'io', 'zh', 'z', 'i', 'i',
        'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f',
        'h', 'c', 'ch', 'sh', 'sh', '`', 'y', '`', 'e', 'iu', 'ia'
    );
    
    return str_replace($rus_alphabet, $rus_alphabet_translit, $text);
}

$lorem = 'Но чтобы вы поняли, откуда возникает это превратное представление людей, порицающих
наслаждение и восхваляющих страдания, я раскрою перед вами всю картину и разъясню, что именно
говорил этот человек, открывший истину, которого я бы назвал зодчим счастливой жизни. Действительно,
никто не отвергает, не презирает, не избегает наслаждений только из-за того, что это наслаждения,
но лишь из-за того, что тех, кто не умеет разумно предаваться наслаждениям, постигают великие
страдания. Равно как нет никого, кто возлюбил бы, предпочел и возжаждал бы само страдание только
за то, что это страдание, а не потому, что иной раз возникают такие обстоятельства, когда страдания
и боль приносят некое и немалое наслаждение. Если воспользоваться простейшим примером, то кто из нас
стал бы заниматься какими бы то ни было тягостными физическими упражнениями, если бы это не приносило
с собой некоей пользы? И кто мог бы по справедливости упрекнуть стремящегося к наслаждению, которое
не несло бы с собой никаких неприятностей, или того, кто избегал бы такого страдания, которое
не приносило бы с собой никакого наслаждения?';

echo rus2translit($lorem);

?>

Результат

В результате на экране вы увидите:
No chtoby vy poniali, otkuda voznikaet eto prevratnoe predstavlenie liudei, poricaiushih
naslazhdenie i voshvaliaiushih stradaniia, ia raskroiu pered vami vsiu kartinu i raz`iasniu, chto imenno
govoril etot chelovek, otkryvshii istinu, kotorogo ia by nazval zodchim schastlivoi zhizni. Deistvitel`no,
nikto ne otvergaet, ne preziraet, ne izbegaet naslazhdenii tol`ko iz-za togo, chto eto naslazhdeniia,
no lish` iz-za togo, chto teh, kto ne umeet razumno predavat`sia naslazhdeniiam, postigaiut velikie
stradaniia. Ravno kak net nikogo, kto vozliubil by, predpochel i vozzhazhdal by samo stradanie tol`ko
za to, chto eto stradanie, a ne potomu, chto inoi raz voznikaiut takie obstoiatel`stva, kogda stradaniia
i bol` prinosiat nekoe i nemaloe naslazhdenie. Esli vospol`zovat`sia prosteishim primerom, to kto iz nas
stal by zanimat`sia kakimi by to ni bylo tiagostnymi fizicheskimi uprazhneniiami, esli by eto ne prinosilo
s soboi nekoei pol`zy? I kto mog by po spravedlivosti upreknut` stremiashegosia k naslazhdeniiu, kotoroe
ne neslo by s soboi nikakih nepriiatnostei, ili togo, kto izbegal by takogo stradaniia, kotoroe
ne prinosilo by s soboi nikakogo naslazhdeniia?
Добавлено: 20 Августа 2013 08:32:19 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...