Транслитерация в кириллицу php

Transliterator::transliterate

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Описание

Преобразует строку или её часть, используя транслитератор ICU.

Список параметров

Строка для транслитерации.

Начальный индекс, включительно, (в кодовых единицах UTF-16), с которого начинается часть строки, предназначенная для транслитерации. Индексация начинается с 0. Текст до этой позиции останется как есть.

Начальный индекс, не включая, (в кодовых единицах UTF-16), которым заканчивается часть строки, предназначенная для транслитерации. Индексация начинается с 0. Текст с этой позиции останется как есть.

Возвращаемые значения

Преобразованная строка в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #1 Конвертация экранированной UTF-16 строки

Результатом выполнения данного примера будет что-то подобное:

Смотрите также

User Contributed Notes 5 notes

Sorry, for posting it again, but I found a bug in my code:

Here’s my new code, including an example:

var_dump(transliterator_transliterate(‘Any-Latin; Latin-ASCII; [\u0100-\u7fff] remove’,
«A æ Übérmensch på høyeste nivå! И я люблю PHP! есть. fi»));
// string(50) «A ae Ubermensch pa hoyeste niva! I a lublu PHP! est. fi»

Also an example here:

var_dump(iconv(«UTF-8», «ASCII//TRANSLIT//IGNORE», transliterator_transliterate(‘Any-Latin; Latin-ASCII’,
«A æ Übérmensch på høyeste nivå! И я люблю PHP! есть. fi»));
// string(50) «A ae Ubermensch pa hoyeste niva! I a lublu PHP! est’. fi»

You can create slugs easily with:

echo slugify ( «Я люблю PHP!» );
?>

There are some possibly undesirable conversions with ASCII//TRANSLIT//IGNORE or your users may require some custom stuff.

You might want to run a substitution up front for certain things, such as when you want 3 letter ISO codes to replace currency symbols. £ transliterates to «lb», for example, which is incorrect since it’s a currency symbol, not a weight symbol (#).

ASCII//TRANSLIT//IGNORE does a great job within the realm of possibility 🙂

When it doesn’t do something you want it to, you can set up a CSV with one replacement per line and run a function like:

or you can write some regexes. Transliterating using ASCII//TRANSLIT//IGNORE works so well that your map probably won’t be very long.

= ‘àáâãäçèéêëìíîïñòóôõöùúûüýÿ
ÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ’ ;
$rule = ‘NFD; [:Nonspacing Mark:] Remove; NFC’ ;

Источник

PHP функция перевода в транслит translit()

Достаточно сложно сказать, какой вариант ЧПУ наиболее оптимален для поисковых систем и насколько это влияет на релевантность. В рамках данной статьи я решил опустить данный вопрос и предложить вашему вниманию готовую php-функцию перевода кириллицы (русского) в транслит, которую я использую в своих проектах.

Нюансы перевода в транслит

PHP-функция translit()

Всё выше сказанное, по крайней мере, в упрощенном виде, реализовано в используемой мной функции перевода в транслит, вот её php-код:

Как Вы видите, я постарался дать комментарии ко всем осуществляемым здесь действиям. При желании Вы можете отказаться от чего-то из предложенного, дополнить или изменить существующие. В любом случае данная php-функция перевода в транслит, как по мне, наиболее оптимальна.

Читайте также:  разница между торой и ветхим заветом

Коротко о транслитерации

Процесс транслитерации имеет массу особенностей. В своей статье я остановился именно на переводе кириллицы в транслит, т.е. русский текст набранный латинскими буквами. Предложенный вариант php-функции, заточен под создание ЧПУ, которое нормально воспринимается поисковыми системами Google и Яндекс. В принципе, translit() я использую как одну из функций набора фильтров, что позволяет автоматизировать сам процесс обработки данных, но это совсем другая история.

Ну, и т.к. мы заговорили о ЧПУ, следует также сказать и о полноценном переводе. Очевидно, что реализация такого варианта собственными силами не будет простой, а значит более правильно будет воспользоваться сторонним сервисом, например, Google переводчиком. Если данная тема Вам интересна, рекомендую ознакомиться с моей PHP-функцией многоязычного перевода gtranslate().

На этом у меня всё. Спасибо за внимание. Удачи!

По-моему это очень недоработанная транслитерация, применять где-то на практике ее будет сложно. Слово «объектив» у вас будет «obektiv», без указания смягчения буквы «б». Нормальные транслитераторы делают «ob’ektiv» или «objektiv»

2 декабря 2013 г., 11:25 Удалить комментарий

@plutov.by: приведенный пример транслитерации заточен под ЧПУ, а в нём символ одинарной кавычки не допустим, а точнее вызовет дополнительные проблемы.

2 декабря 2013 г., 11:29 Удалить комментарий

Тогда беру свои слова обратно, пропустил ЧПУ, это всё понедельник 🙂

2 декабря 2013 г., 11:31 Удалить комментарий

@plutov.by: не, в принципе, логично, но невозможно учесть все варианты, а транслит обычно используют именно под ЧПУ. 🙂

2 декабря 2013 г., 11:43 Удалить комментарий

так как после удаления недопустимых символов возникают двойные, тройные и т.д. пробелы

а в целом хорошая функция получилась, вычищает разный мусор и делает всё красиво! 😉

24 января 2015 г., 0:48 Удалить комментарий

Спасибо большое. часть вашего кода мне очень помогла.

28 октября 2015 г., 12:18 Удалить комментарий

12 ноября 2015 г., 17:07 Удалить комментарий

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

$result = translit(‘функция перевода в транслит’);

или вывести на экран:

echo translit(‘функция перевода в транслит’);

12 ноября 2015 г., 17:09 Удалить комментарий

Спасибо за подсказку

14 ноября 2015 г., 17:03 Удалить комментарий

Чтобы не задавать локаль для strtolower($s), можно добавить соответствия для заглавных букв в array() и потом уже переводить в нижний регистрр

28 февраля 2016 г., 18:58 Удалить комментарий

2Алексей Можно, но это значительно увеличит размер массива.

1 марта 2016 г., 11:41 Удалить комментарий

Спасибо. Сэкономил ку-у-у-учу времени. Просто copy&paste и все работает!

18 сентября 2016 г., 3:25 Удалить комментарий

А могу я эту функцию вставить в обработчик формы, чтобы он в строку дополнительную загонял транслитом?

23 октября 2016 г., 21:19 Удалить комментарий

Я так делал для своих CMSок, что ЧПУ генерить.

23 октября 2016 г., 23:01 Удалить комментарий

Спасибо Автор 🙂 работает все оху. о)

Читайте также:  Standard dbl что это значит

11 декабря 2016 г., 16:57 Удалить комментарий

Я бы еще добавил ‘UTF-8’ в строку mb_strtolower($s, ‘UTF-8’) : strtolower($s, ‘UTF-8’);

23 февраля 2017 г., 15:55 Удалить комментарий

3 марта 2017 г., 18:37 Удалить комментарий

Спасибо. Отличная функция. Ооочень помогла!

24 марта 2017 г., 14:52 Удалить комментарий

12 апреля 2017 г., 20:34 Удалить комментарий

Благослови Вас бог. Я чуть не потратил кучу времени.

Источник

Русский текст в транслит на PHP

Например, если имя «Михаил«, то логин должен быть «mihail«. Если такой логин уже занят, то тогда логин «mihail1«, если и он уже занят, то «mihail2» и так далее до свободного. Теперь, собственно, возвращаемся к теме статьи. Вот простейшая функция, которая переводит русский текст в транслит:

Думаю, что здесь код очень прозрачный: есть 2 массива с одинаковым числом элементов. В первом массиве буквы русского алфавита, а во втором в соответствующих позициях их написание в транслите. Затем идёт обычная замена с помощью функции str_replace() и возврат результата.

Вот таким образом делается перевод русского текста в транслит на PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 6 ):

Еще есть такая полезная функция как strtr

Смысле, Вы хотите, чтобы полученные данные были переведены в транслит?

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Cyrillic transliteration in PHP

How to transliterate cyrillic characters into latin letters?

This Transliteration PHP Extension would do this very well, but I can’t install it on my server.

It would be best to have the same implementation but in PHP.

14 Answers 14

Try following code

Your code has a problem: if you try to transliterate for example «щеки» to latin and then back to cyrillic it will produce something like «схтеки». The multi-byte characters must appear first in the array like this:

echo transliterate(null, transliterate(«щеки»)) == «щеки»;

30chars and the other has

The best option is using PHP Intl Extension. You might want install it first.

This will do the trick:

Читайте также:  Что такое площадь окса в многоквартирном доме

I applied ‘Russian-Latin/BGN’ because the asker used Russian language in his question. However, there are options for other languages written in the Cyrillic script. To view all of them do this:

You should try iconv() with the //TRANSLIT option.

missing ё, э, ы (Э, Ы, Ё) letters

Here is a function that I use for cleaning characters on Bosnian,Croatian,Serbian latin

This is my version of transliteration table for russian alphabet. It’s unofficial but based on technical standards GOST 7.79-2000 and GOST 16876-71. Multi-characters go first.

I wrote a full transliteration class for all European languages for utf-8. May help (comments are in polish but there isn’t a lot of them so here’s a few hints:

Hope it will help a few people ’cause implementing it was a nightmare 🙂

Edit: I just noticed that part of the code is missing so I’ve put the full class on Pastie: class

Источник

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

Транслитерация сегодня применяется довольно обширно, в различных приложениях и не только. Кто не слышал о том, что такое транслитерация, немного поясню. Чтобы перевести знаки одной письменности в знаки другой удобно использовать транслитерацию. При этом каждый знак, либо последовательность знаков одной системы письма передается одним и тем же знаком или последовательностью другой системы письма. Данную систему можно было наблюдать ещё в момент появления мобильной связи, к примеру, когда вы пишите SMS сообщение на русском языке, а адресату приходит сообщение уже с транслитерацией, с буквами английского алфавита.

В сети интернет транслитерация также используется довольно часто, как правило, там, где есть необходимость конвертации символов русского языка на английский. Одним из ярких примеров является ЧПУ, в них традиционно содержаться закладываются названия страниц, а так же отсекаются все лишние символы. Такая реализация URL адресов может положительно повлиять на продвижение страниц сайта в поисковых системах.

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

В данном примере, ключевым моментом является использование штатной функции PHP strtr, с посредством которой производится замена символов, а так же комбинаций символов. Более подробно возможность данной функции документирована в документации PHP, и при необходимости вы можете с ней разобраться более детально.
В примере выше строка транслитерируется таким образом, что для использования в URL лучше не оставлять символов пробела, а заменять знаком тире, либо нижним подчеркиванием. Исправим ситуацию, рассмотрим второй пример, который транслитерирует строку, таким образом, который необходим для использования в URL.

В данном примере реализованы две функции: translit и makeUrlCode. Функция translit производит транслитерацию строки, вторая функция makeUrlCode получая в качестве параметров строку, передает её функции translit, затем переводит результат в строку нижнего регистра, а так же удаляет/заменяет все ненужные символы. В итоге на выходе получается код, пригодный для использования его в URL.

Источник

Образовательный портал