На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Функция транслит на php с демонстрацией


У Google есть такая рекомендация для тех, кто создает сайты или занимается их поддержкой или наполнением:

Структура URL сайта должна быть предельно простой. Попробуйте организовать контент так, чтобы URL имели логическую структуру и были понятны для человека (по возможности используйте слова, а не идентификаторы, состоящие из множества цифр).
Говоря проще, лучше не использовать урл типа «index.php?id=83&pid=345&vid=300074», преобразовать их в такие «/funkcia-translit-chpu». У большинства современных CMS есть или встроенная функция или плагины, которые дают возможность перевести название страницы (которое чаще всего и берется в качестве URL) в транслит. Однако, если кмс самописная, то приходится делать это самостоятельно.

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

<?php
	function trans($title)
	{
	$alf = array(
			'а' => 'a',   'б' => 'b',   'в' => 'v',
			'г' => 'g',   'д' => 'd',   'е' => 'e',
			'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
			'и' => 'i',   'й' => 'y',   'к' => 'k',
			'л' => 'l',   'м' => 'm',   'н' => 'n',
			'о' => 'o',   'п' => 'p',   'р' => 'r',
			'с' => 's',   'т' => 't',   'у' => 'u',
			'ф' => 'f',   'х' => 'h',   'ц' => 'c',
			'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
			'ь' => '',    'ы' => 'y',   'ъ' => '',
			'э' => 'e',   'ю' => 'yu',  'я' => 'ya',

			'А' => 'A',   'Б' => 'B',   'В' => 'V',
			'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
			'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
			'И' => 'I',   'Й' => 'Y',   'К' => 'K',
			'Л' => 'L',   'М' => 'M',   'Н' => 'N',
			'О' => 'O',   'П' => 'P',   'Р' => 'R',
			'С' => 'S',   'Т' => 'T',   'У' => 'U',
			'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
			'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
			'Ь' => '',    'Ы' => 'Y',   'Ъ' => '',
			'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
		);
		$title = strtr($title, $alf);
		$title = mb_strtolower($title);	
		$title = mb_ereg_replace('[^-0-9a-z]', '-', $title);
		$title = mb_ereg_replace('[-]+', '-', $title);
		$title = trim($title, '-');			
		return $title;
	}	
?>
В теле функции определяется ассоциативный массив; вы, кстати, можете его исправлять. Так, например, иногда букву «ё» в транслите преобразуют в «yo», а не в «e», как у меня тут. С помощью mb_strtolower мы приводим строку к нижнему регистру, а дальше убираем все ненужные символы (точнее, заменяем их на "-"), ну и в коце убираем крайние "-".

Проверить можно следующим образом:

echo trans("Макар, зачем топтать мою морковь?!");
На выходе получим

makar-zachem-toptat-moyu-morkov
Если вы не понимаете, как работает транслит, то можно увидеть прямо на моем сайте - просто введите фразу сюда:

Вот что получается:


Стоит отметить, что тут результат будет не такой, как от функции php выше, так как здесь я использую js с немного другим алгоритмом. Здесь просто все преобразуется в нижний регистр, заменяются русские буквы на латинские и пробелы с другими знаками препинания преобразуются в "-".

Если вам требуется написать какую-либо функцию на php или javascript, расширяющую функционал вашего сайта, то вы можете обратиться ко мне - я с удовольствием и за небольшую плату исправлю или дополню ваш веб сайт. Или недорого сделаю его с нуля.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, php, транслит, функции





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Обзор Java Date и Time API
Неочевидный взлом сайта


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.