alt

Когда человеку тяжело,
это часто означает,
что он идёт к успеху.

alt


Транслитерация средствами PHP.

Категория: Скрипты php Просмотров: 3685 Коментариев: 0 Дата: 2017-02-02 Добавил: admin

Транслитерация

Раз Вы читаете эту статью, значит, Вам понадобилась транслитерация. Руководствуясь этим достаточно сложным словом, мы создадим достаточно простую функцию, которая сможет провести замену различных символов (например: заменить пробел на тире) или проведет замену символов кириллицы на символы латиницы, или изменит регистр букв (напимер: большую букву на маленькую). В целом данная функция может выполнять достаточно широкий аспект работы. Создание этой функции мне понадобилось, когда для сайта нужно было создавать человекочитаемые (userfriendly) URL и выводить их в адресной строке вместо id – материала.

Все, что нам понадобится для создания нашей функции - это массив с данными для транслитерации, а именно символами, находящимися в соответствие друг с другом таким образом, что каждому символу на кириллице будет соответствовать символ из латиницы. Ну и, конечно же, функция strtr (); которая и будет обрабатывать наш массив.

Ниже будет показан код, который работает при показе демо.

Первое, что мы сделаем - это создадим форму с текстовым полем <textarea> </textarea> и кнопку, после нажатия, которой будет обрабатываться внесенный текст.

HTML

Введите текст или символы для транслитерации:




                

Затем создадим сам PHP код который и обработает данные в веденные в текстовое поле.

PHP


"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"-","є"=>"ye","ѓ"=>"g",
                   "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
                   "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
                   "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L",
                   "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
                   "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"X",
                   "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
                   "Ы"=>"Y","Ь"=>"'","Э"=>"E","Ю"=>"YU","Я"=>"YA",
                   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
                   "е"=>"e","ё"=>"yo","ж"=>"zh",
                   "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
                   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
                   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
                   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
                   "ы"=>"y","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya",
                   " "=>"-","—"=>"-",","=>"_","!"=>"-","@"=>"_",
                   "#"=>"-","$"=>"","%"=>"","^"=>"","&"=>"","*"=>"",
                   "("=>"",")"=>"","+"=>"","="=>"",";"=>"",":"=>"",
                   "'"=>"","~"=>"","`"=>"","?"=>"","/"=>"",
                   "["=>"","]"=>"","{"=>"","}"=>"","|"=>"",
                   "\""=>"","\\"=>"",
               );
               
               
        $result = strtr($tranalete, $gost);
          
         
    }

?>

Начальная запись:

Результат транслитерации:

Функцию htmlspecialchars(); используем для преобразования специальных символов в их сущность.

Так же, все это можно вывести в отдельную библиотеку в которой и будет уже создана долго обещаемая функция транслитерации.

PHP
class Transliteratia_lib  
    {    
      public function transliteratia($peredanaia_stroca_dlia_perevoda)
        {
              $gost = array(
                   "Є"=>"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"-","є"=>"ye","ѓ"=>"g",
                   "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
                   "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
                   "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L",
                   "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
                   "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"X",
                   "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
                   "Ы"=>"Y","Ь"=>"'","Э"=>"E","Ю"=>"YU","Я"=>"YA",
                   "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
                   "е"=>"e","ё"=>"yo","ж"=>"zh",
                   "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
                   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
                   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
                   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
                   "ы"=>"y","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya",
                   " "=>"-","—"=>"-",","=>"_","!"=>"-","@"=>"_",
                   "#"=>"-","$"=>"","%"=>"","^"=>"","&"=>"","*"=>"",
                   "("=>"",")"=>"","+"=>"","="=>"",";"=>"",":"=>"",
                   "'"=>"","~"=>"","`"=>"","?"=>"","/"=>"",
                   "["=>"","]"=>"","{"=>"","}"=>"","|"=>"",
                   "\""=>"","\\"=>"",
               );
                //Возвращаем результат работы функции
            return strtr($peredanaia_stroca_dlia_perevoda, $gost);
        }  
    }

Массив $gost можно переделать и под свои стандарты заменив уже существующие или добавить свои варианты транслитерации. Так же не забываем экранировать обратный слеш так, как это показано в примере. Вот таким не сложным скриптом на PHP мы смогли реализовать замену одного символа на другой, а так же транслитерировать целые предложения с кириллицы на латиницу. Смотри демо-пример.


Просмотреть демо: Демо

Скачать исходник: Скачать



Добавить комментарий:


Ваше имя

Текст комментария


Введите буквы с учетом регистра:





Апдейты

Популярное Свежие записи

Облако тегов