PHP: Функция транслита

Author Роман Чернышов    Category PHP     Tags , , , Комментариев 3 Дата 18 Янв

Хочу поделиться кое какими своими наработками, в частности функцией траслита на PHP. На входе кириллица, а на выходе предложение на латинской раскладке. Собственно для чего она может пригодиться? Например для генерации ЧПУ на своем сайте, из заголовка новости. Особенно эта функция может пригодиться сторонникам самописных CMS.

Пример:
 
Привет мир => privet_mir

Впрочем одним ЧПУ можно не ограничиваться, а пойти гораздо дальше. И конвертировать например, все ники пользователей на сайте, написанные на русском. Да, вы не поверите, но именно с такими просьбами ко мне обращаются «админы» периодически.

Не буду утомлять своими рассуждениями. Представляю вам функцию generate_chpu;

	function generate_chpu ($str)
		{
		$converter = 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',
		);
		$str = strtr($str, $converter);
		$str = strtolower($str);
		$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
		$str = trim($str, "-");
		return $str;
		}

Полезная и не заменимая фишка для поискового SEO, вашего сайта. Думая с установкой и подключением разберетесь самостоятельно. (Хотя блог в большинстве читают новички)

3 комментария to “PHP: Функция транслита”

  • Nikolay 28.03.2012 в 7:46 дп

    Спасибо, а он будет слеши убирать? И есть ли какие-нибудь подводные камни? С кодировкой может проблемы или еще что? Я себе сделал, пока проблем нет.

  • Роман Чернышов 28.03.2012 в 11:10 дп

    Да слеши убирает, проблем с кодировкой быть не должно.

  • alex 24.03.2013 в 3:19 дп

    в converter’e большие буквы не сильно и помогут, всё равно всё в нижний регистр переводится.

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

    В конце ещё вот такой изврат может помочь.
    while (strpos($str,’—‘)!==false)
    $str = str_replace(‘—‘,’-‘, $str);

Оставить комментарий

Об авторе и блоге Чернышов Р.В. Сертификат. Топ 10% лучших фрилансеров, Чернышов Р.В.

Друзья, всем привет!

Меня зовут Роман Чернышов, я веб-разработчик и данный блог посвящен моим проектам и бизнесу.

Тут я делюсь личным опытом
и отвечаю на вопросы. Я всегда готов к сотрудничеству с вами, готов реализовать проект любой сложности(опыт 10+ лет).

Если у вас есть вопросы, предложения, вы хотите совершить покупку моих решений или заказать работу, пишите!



Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка