Перевод с русского в транслит

Добрый вечер, дорогие друзья! Рад поздравить всех с прошедшими праздниками. Как по мне, так минувший год у меня завершился в суете и хлопотах. Не менее непряжённым будет и предстоящий. Так что набираемся силёнок и в путь с песней 🙂

Итак, сегодня что-то я решил затронуть ЧПУ, о которых мы уже говорили. Только сегодня обсудим адреса, содержащие в адресе страницы название самого поста. Например, посмотрим на блог, работающий на движке WordPress, - Циклонет. Открыв любую из статей, мы замечаем в адресе название самого поста, написанное на языке транслита. Сам перевод осуществляется с помощью специального скрипта - плагина. Чтобы реализовать ЧПУ в CMS, нужно загрузить парочку таких плагинов и их активировать. А вот если сайт собственноручный, то над созданием такого скрипта стоит потрудиться самому.

Реализуется такой скрипт до безобразия легко - на PHP, с помощью массивов. Существует аналоги и на Perl и прочих языках, но я предпочитаю PHP, т.к с ним лучше знаком.
Для того чтобы сразу по ходу написания делать проверки, создадим два файла. Первый (index.php) будет содержать простенькую форму, в которую мы будем вписывать необходимое нам словосочетание на русском. А второй файл (trans.php) - сам скрипт, который занимается переводом.

Шаг №1

Создаём файл index.php со следующей формой:

Исходный текст:


Синтаксис: html

Синтаксис: html

Шаг №2

Создаем файл trans.php, в котором начнём кодировать. Первое, что необходимо нам сделать, - поместить содержимое глобальной переменной (если таковая существует) в отдельную переменную:
if (isset($_POST['txt'])) {
$txt = $_POST['txt'];
$txt2 = $txt;
Синтаксис: php
}Синтаксис: php

Отлично, не стоит исключать тот момент, что пользователь не введёт никакое слово в форму и захочет перевести. В таком варианте мы должны вывести сообщение об ошибке. Добавляем:
Синтаксис: php
if(!isset($_POST['txt']) or empty($_POST['txt'])) {exit("

Введите фразу

");}Синтаксис: php

И теперь самое главный момент - преобразуем введённую нами фразу с помощью функции strtr:
$txt=strtr($txt,"абвгдеёзийклмнопрстуфхцыэАБВГДЕЁЗИЙКЛМНОПРСТУФХЦЫЭ","abvgdeeziyklmnoprstufhcieABVGDEEZIYKLMNOPRSTUFHCIE");
$txt=strtr($txt, array(
"ж"=>"zh", " "=>"-", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ъ"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"Zh", "Ч"=>"Ch", "Ш"=>"Sh",
"Щ"=>"Shch","Ь"=>"", "ъ"=>"Ъ", "Ю"=>"Yu", "Я"=>"Ya",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye")
Синтаксис: php
);Синтаксис: php

Всё, теперь осталось вывести результат перевода на экрана. Для этого используем оператор echo:
Синтаксис: php
echo "

Результат перевода слова ".$txt2.":".$txt."

";Синтаксис: php

Таким образом после всех проделанных операций наш файл trans.php будет содержать следующее:
Синтаксис: php

На этом у меня всё. До новых встреч!