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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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: Функция транслита

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

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

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

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

Похожие записи

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

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

Источник

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

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