транслитерация в кириллицу 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. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

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

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

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

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

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

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

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

Источник

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

Функция перевода русского текста в транслит используется практически в каждом web-проекте. Например, это применяется для ЧПУ, генерации логина или никнейма по имени пользователя или даже для определения пола по имени! И чаще всего внутри себя представляет что-то типа:

Так вот, никогда так не делайте! Потому что в PHP начиная с версии 5.4 которая вышла в 2012 году уже существует расширение intl, содержащий класс Transliterator и функцию transliterator_transliterate для решения этой задачи.

Транслит русских имён и фамилий при помощи PHP

Сперва нужно установить расширение. Я буду делать это для CentOS:

Как и принято для старых версий PHP, с модулем intl, в частности с Transliterator можно работать как в ООП-стиле, так и в процедурном. Например, для перевода имён на кириллице в транслит удобнее всего использовать такой код:

Именно такой вариант наиболее грамотно работает с нюансами русскоязычных имён. Такой код позволит легко получить из имени Юлия — Yulia. Другие опции транслитератора выглядят более коряво, а Ulia уже не выглядит как имя.

Транслитерация с русского на английский в PHP

К сожалению, официальная документация на этот модуль отсутствует. И вместо объяснения нюансов работы можно прочесть только: к настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов. Однако, можно посмотреть стороннюю документацию. Также можно использовать цепочки транслитераций. Например, нельзя напрямую транслитерировать корейский в русский. Однако, можно сначала транслитерировать корейский в латинский алфавит, а затем латиницу в кириллицу. Получается такая цеопчка: 김, 국삼 — Gim, Gugsam — Гим, Гугсам. Работает это примерно так:

Также можно в режиме онлайн поиграться с разными опциями транслитерации. Опций реально много и они помогут решить большинство задач по обработке текста:

Коротко о PHP расширении intl ICU

API расширения максимально соответствует оригинальному API ICU. Благодаря этому документация по ICE может использоваться при работе в PHP.

Расширение интернационализации Intl — это обёртка для библиотеки ICU, позволяющей программистам на PHP производить форматирование, транслитерацию, преобразование кодировок, операции с календарём, сравнение совместимое с UCA, определение границ текста, а также работать с идентификаторами локалей, временными зонами и графемами.

Читайте также

Стандартные библиотеки PHP умеют генерировать только целые случайные числа. Однако, возникают задачи где нужно не целое рандомное число с максимально…

Иногда при обработке с помощью PHP больших и не очень данных, можно словить досадную ошибку посреди выполнения скрипта: PHP Fatal…

Источник

Функция для транслитерации url на php

транслитерация в кириллицу php. Смотреть фото транслитерация в кириллицу php. Смотреть картинку транслитерация в кириллицу php. Картинка про транслитерация в кириллицу php. Фото транслитерация в кириллицу php

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

С другой стороны в русском алфавите используется 33 буквы, а в английском всего лишь 26, и поэтому закодировать все русские буквы одной латинской буквой не получится. Для этого следует использовать две-три буквы или специальные символы. Иначе обратное преобразование из транслита в оригинальный текст без потерь будет невозможна.

Когда-то я задавал себе все эти вопросы и решил найти свой наиболее оптимальный вариант транслитерации русских букв в латиницу. Когда-то ещё на заре появления мобильных технологий мне попалась одна небольшая книжечка от сервиса БиОнЛайн, где и приводилась таблица соответствия букв русского и английского алфавитов. Не сложно догадаться, что при отправке SMS тоже очень часто применяется транслитерация. С точки зрения телекоммуникаций, чем меньше символов мы выделяем для передачи нашего сообщения, тем эффективнее наша система передачи.

АБВГДЕЁ
ABVGDEYO
ЖЗИЙКЛМ
ZHZIJKLM
НОПРСТУ
NOPRSTU
ФХЦЧШЩЪ
FHTSCHSHSCH«
ЫЬЭЮЯ
YEYUYA

В общем, так я решил использовать эту таблицу для транслитерации русских букв в латиницу.

Немного побродив по рунету я нашёл несколько сайтов, где были представлены алгоритмы преобразования в транслит на PHP. И выбрав из них всё самое лучшее и наиболее эффективное написал 3 функции для преобразования в транслит и обратно и для преобразования строки в валидный url-адрес.

Итак, ниже привожу листинг этих функций:

Функция для преобразования в транслит:

Функция для преобразования из транслита в обычный текст:

Функция для преобразования строки в валидный url-адрес:

Добавлю немного разъяснений как они работают.

Функции translit() и antitranslit() очень похожи и занимаются непосредственно заменой одних символов другими. На входе они принимают два параметра:

Естественно, массивы для преобразования одних символов другими можно изменить своими наборами символов. И это будут ещё другие варианты для получения транслитерации кириллического текста.

Вначале происходит преобразование HTML-сущностей в соответствующие символы функций html_entity_decode().

Далее происходит очистка строки от HTML-тегов и начальных/конечных пробелов функциями strip_tags и trim() соответственно.

Далее происходит преобразование регистра букв в нижний регистр функциями strtolower() или mb_strtolower() (для кодировки utf-8).

После выборки всех недопустимых символов функция preg_replace() их заменяет пустой строкой.

Далее та же функция preg_replase() заменяет все пробельные символы и дефисы одним дефисом. И после этого если в начале или в конце остался лишний дефис, то он удаляется функцией trim().

Для некоторых браузеров, например старых версий Internet Explorer максимальная длина url-адреса составляла 2048 байт. Хотя современные браузеры поддерживают url-запросы ещё большей длины, всё же лучше ограничить достаточно длинную строку конечным числом символов, чтобы избежать возможных ошибок и зависаний браузеров. Да и пользователю будет легче скопировать и передать более короткий url-адрес.

Поэтому функцией mb_strlen() вычисляем длину полученной строки и если она превышает 255 символов, отрезаем всё лишнее при помощи функции mb_substr().

В приложенном файле translit.php, который вы можете скачать по ссылкам ниже, приводятся примеры работы описанных функций транслитерации и приводятся ссылки на другие сайты по этой теме.

Если вы также пишете сайты на php или задаётесь вопросами о транслитерации, то думаю этот материал будет вам полезен. Пользуйтесь.

Вы вошли на сайт как Гость.

Источник

Кириллическая транслитерация в PHP

Как транслитерировать кириллические символы на латинские буквы?

Это расширение транслитерации PHP сделало бы это очень хорошо, но я не могу установить его на свой сервер.

Было бы лучше иметь такую ​​же реализацию, но и в PHP.

Попробуйте следующий код

У вашего кода есть проблема: если вы попытаетесь транслитерировать, например, «щеки» на латинский, а затем вернуться к кириллице, это произведет нечто вроде «схтеки». Многобайтные символы должны сначала отображаться в массиве следующим образом:

echo transliterate (null, транслитератор («щеки»)) == «щеки»;

Лучший вариант – использование PHP Intl Extension. Возможно, вы захотите установить его в первую очередь.

Я применил «русско-латынь / BGN», потому что искатель использовал русский язык в своем вопросе. Тем не менее, есть варианты для других языков, написанных на кириллице. Чтобы просмотреть все из них, выполните следующие действия:

отсутствуют буквы ё, э, ы (Э, Ы, Ё)

Я написал полный транслитерационный класс для всех европейских языков для utf-8. Может помочь (комментарии написаны на польском языке, но их не так много, поэтому несколько советов:

Надеюсь, это поможет нескольким людям вызвать внедрение этого кошмара 🙂

Изменить: я просто заметил, что часть кода отсутствует, поэтому я поместил полный класс в Pastie: class

Поскольку все вышеперечисленное неполно, вот моя версия:

Я предпочитал ё = е, ъ = i, ы = у и э = е, потому что я использую этот путь.

Вот функция, которую я использую для очистки символов на боснийском, хорватском, сербском латинском языке

для меня лучшим решением было использовать

Это моя версия таблицы транслитерации для русского алфавита. Это неофициальный, но основанный на технических стандартах ГОСТ 7.79-2000 и ГОСТ 16876-71. Сначала идут мультисимволы.

Уважая правила транслитерации Yandex ( http://www.translityandex.ru/ ) и конвертируя верхний регистр:

Это работало лучше для меня. Код с этой страницы

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *