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

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

translit PHP: Функция транслитаХочу поделиться кое какими своими наработками, в частности функцией траслита на 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);

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

О блоге и авторе

Добро пожаловать на блог веб-разработчика! На протяжении многих лет, начиная с 2009 года, я занимаюсь созданием специализированных сайтов, сервисов и крупных веб-порталов. Мною было создано несколько сотен сайтов, большинство из которых работают на ПО созданном под заказ, а также на готовом ПО которое я разрабатываю на протяжении всего периода моей деятельности. Это: CMS "Совместные покупки", CMS "osRealty", CMS "Спорт прогнозы" и многое другое.

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

Поиск по блогу
Категории
Архив
Новое на сайте
Блогеры пишут
  • Роман Чернышов: Для работы капчи на PHP 5.6, замените в файле class.captcha.php строку 264 $ifunc( $this -> i [...]
  • Роман Чернышов: Схема такая: 1) На сайте есть виртуальные кошельки (далее ВК) 2) При пополнении пользователем ВК, [...]
  • Александр: Может скрипт комментариев блокирует сообщения с кодом? Или как длинный текст не проходит?
  • Александр: Пытаюсь в который раз здесь показать код, но страница обновляется, и не сообщения, ни любого оповеще [...]
  • Роман Чернышов: Лично у меня интерес к продаже ссылок пропал уже давно. Преимущество сапы, это то - что ссылки можно [...]
Портфолио Все работы


www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.videogonok.ru
www.carpfishing.by
www.property-greek.com
www.domcons.ru

с 2009 года по сегодняшний день, создано более 300 сайтов...