Склонение слов по падежам на php
У Яндекса есть очень удобный api сервис, который может трансформировать любое слово, или даже несколько слов, во все падежи. Воспользоваться сервисом очень просто, достаточно сделать запрос по адресу export.yandex.ru/inflect.xml?name=СЛОВО — в ответ будет получен xml со всеми склонениями слова.
Ниже я привел функцию, которая работает с api Яндекса и возвращает нужную форму слова.
Код функции:
И пример использования функции:
Склонение слов по падежам на php: 7 комментариев
За это огромное спасибо, работает на 5+!
А есть то же самое — но для глаголов?
Автор, подобные примеры надо смывать в унитаз! Сам то думал, что за пример показал и новички его ведь будут использовать?
У тебя скрипт делает 6 (ШЕСТЬ) запросов к серверу яндекса, при этом каждый раз яндекс отдаст ВСЕ падежи… представь сколько времени будет генерироваться страница?
Возвращать нужно одним массивом из функции и уже в основном скрипте брать с массива нужное.
Вот не менее функциональный вариант, но с 1 запросом и 1 проходом цикла в отличии от твоих шести.
function getNewFormText($text) <
$urlXml = «http://export.yandex.ru/inflect.xml?name=».urlencode($text);
$result = @simplexml_load_file($urlXml);
if($result) <
$arrData = array();
foreach ($result->inflection as $one) <
$arrData[] = (string) $one;
>
return $arrData;
>
return false;
>
——
// Основной скрипт. Видим что запрос к функции только один
// Здесь было бы разумно сделать проверку на размер массива «$text», вдруг яндекс ничего не вернул, тогда код ниже вызовет нотайсы и соответственно ничего не будет склонять
if(($text = getNewFormText($text)) !== false)
<
echo «Именительный падеж : » . $text[0]. «»;
echo «Родительный падеж : » . $text[1] . «»;
echo «Дательный падеж : » . $text[2]. «»;
echo «Винительный падеж : » .$text[3] . «»;
echo «Творительный падеж : » .$text[4]. «»;
echo «Предложный падеж : » . $text[5]. «»;
>
надо было ссылку дать на описание их API , спасибо так-то.. =) не знал
Источник статьи: http://vk-book.ru/sklonenie-slov-po-padezham-na-php/
Склонение слов на PHP
Весьма популярной проблемой, с которой сталкиваются Web-программисты, это склонение слов на PHP. Например, нужно вывести, сколько минут назад была оставлено какое-нибудь сообщение. Можно написать просто число и слово «минут«. Но тогда будет написано весьма странно, например, «1 минут«, «2 минут» и так далее. Фактически, без склонения слов на PHP Вам не обойтись, если, конечно, Вы хотите писать по-русски.
Проблема новичкам покажется очень сложной, но, на самом деле, у склонения слов есть определённая закономерность. Посмотрите сами: «1 минута, 2 минуты, 5 минут, 11 минут, 19 минут, 21 минута, 22 минуты, 25 минут и так далее«. Видите закономерность? 1, 21, 31, 41 — всегда будет «минута«. Если младший разряд больше 1-го и меньше 5, при этом само число при делении на 100 имеет остаток больше 20 (то есть, например, не число 12 и не 112), то будут «минуты«. В остальных случаях «минут«.
А вот дальше уже начинается построение алгоритма, поскольку закономерность очевидно имеется. Я приведу Вам, на мой взгляд, самый красивый алгоритм. Он наиболее короткий, и в то же время очень быстрый.
Запустив данный скрипт Вы увидите, что склонение слов на PHP происходит на ура. Могу лишь добавить, что помимо «минут» там может быть «день«, «час«, «человек«, «компьютер» и все другие существительные, которые склоняются в зависимости от числительного.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 9 ):
Спасибо Михаил за скрипт как раз в тему, давно хотел создать такой скрипт да руки не доходили. Побольше бы таких продуктивных уроков. А так ты молодец!
Как оказывается просто! Я пошел длинной дорогой. if(($age===1)||($age===2)||. )
Михаилу это легко делать потому что он умный, и знает математику, я не знаю математику и мне написать такое никогда не удастся
Источник статьи: http://myrusakov.ru/php-sklonenie-slov.html
Php функция склонения по падежам
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Склонение падежей русских имён, фамилий и отчеств.
Портированная версия с Ruby на PHP
Для работы требуется PHP >= 5.3
Загрузите файлы в папку с библиотеками на сервере.
если вы хотите использовать petrovich как submodule,
или просто скачайте исходный код со страницы проекта на Github.
В библиотеку входит класс Petrovich и trait Trait_Petrovich
Trait содержит в себе
Названия суффиксов для методов образованы от английских названий соответствующих падежей. Полный список поддерживаемых падежей приведён в таблице ниже.
Суффикс метода | Падеж | Характеризующий вопрос |
---|---|---|
CASE_NOMENATIVE | именительный | Кто? Что? |
CASE_GENITIVE | родительный | Кого? Чего? |
CASE_DATIVE | дательный | Кому? Чему? |
CASE_ACCUSATIVE | винительный | Кого? Что? |
CASE_INSTRUMENTAL | творительный | Кем? Чем? |
CASE_PREPOSITIONAL | предложный | О ком? О чём? |
Метод Petrovich::detectGender возвращает пол, на основе отчества. Возвращаемое значение не зависит от пола, переданного в конструктор. Для полов определены следующие константы
- GENDER_ANDROGYNOUS — пол не определен;
- GENDER_MALE — мужской пол;
- GENDER_FEMALE — женский пол.
About
Склонение падежей русских имён, фамилий и отчеств
Источник статьи: http://github.com/petrovich/petrovich-php
Склонение ФИО — NameCaseLib PHP Framework
Сегодня я расскажу о небольшом, но очень полезном фреймворке — NameCaseLib.
Я думаю, многие сталкивались с ситуацией, когда было необходимо просклонять Фамилию, Имя и Отчество человека по падежам. Данный фреймворк поможет нам избавиться от многочисленных «велосипедов».
Установка
Для работы NameCaseLib нам понадобится PHP5 и библиотека php_mbstring, для работы с текстом в формате UTF-8.
Отлично, теперь осталось подключить сам фреймворк, для этого скачаем необходимые файлы.
NameCaseLib поддерживает два языка: русский и украинский. Файл NCL.NameCase.ru.php содержит русские правила склонения, NCL.NameCase.ua.php, соответственно, украинские. В папке NCL расположено само «ядро» фреймворка, то есть, набор основных функций.
Итак, давайте создадим файл в формате .php, и проверим работоспособность данного фреймворка.
Соответственно, таким же образом, мы можем склонять и украинские ФИО, подключив украинские правила склонения.
Но, давайте все-таки разберем, какие параметры содержит в себе метод q, и как его еще можно использовать?
Данный метод имеет 3 параметра, 2 из них — можно не указывать. Первый параметр — ФИО человека, второй — падеж (Список констант приведу ниже; в случае, если не указан падеж (NULL), то метод возвращает все падежи), и третий — пол человека. (Константы, также, приведены ниже; если не указать пол (NULL), метод определит его сам)
Константы
Для указания пола используются константы:
- NCL::$MAN – мужской пол
- NCL::$WOMAN – женский пол
Для указания падежей русского языка:
- NCL::$IMENITLN — именительный падеж
- NCL::$RODITLN — родительный падеж
- NCL::$DATELN — дательный падеж
- NCL::$VINITELN — винительный падеж
- NCL::$TVORITELN — творительный падеж
- NCL::$PREDLOGN — предложный падеж
Для указания падежей украинского языка:
- NCL::$UaNazyvnyi – називний відмінок
- NCL::$UaRodovyi – родовий відмінок
- NCL::$UaDavalnyi – давальний відмінок
- NCL::$UaZnahidnyi – знахідний відмінок
- NCL::$UaOrudnyi – орудний відмінок
- NCL::$UaMiszevyi – місцевий відмінок
- NCL::$UaKlychnyi – кличний відмінок
Примечания
- Порядок расположения ФИО не имеет значения.
- Не имеет значение, в каком регистре указаны ФИО, после склонения, метод возвращает сохраненный регистр букв.
Определение части ФИО
С помощью метода getFullNameFormat, мы можем определить часть, или какие части ФИО мы используем.
Но, что же делать, если все-таки фреймворк не может правильно определить, как склонять выбранное вами ФИО?
Для этого в библиотеке предусмотрен метод qFullName, который позволяет указать Фамилию, Имя, Отчество и пол человека в определенной последовательности.
Итоги
NameCaseLib — действительно удобный фреймворк, который включает в себя много полезных функций. На сайте имеется полная документация на русском языке.
Проект на github.
Официальный сайт.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Источник статьи: http://habr.com/ru/sandbox/74462/