Php функция за склонение по регистър. Модул за склонение на малки и големи букви за PHP. API за склонение на дума, получаване на пол (мъжки, женски), падеж, склонение и други характеристики на дума

Модулът morpher.so е предназначен за падежно склонение на думи и фрази - фамилни имена, имена и бащини имена, имена на градове и стоки - на руски и украински език.

Функция за склонение по падежи

Един милион долара отива заотНабережние Челни" , " прът " ); ?> !

В резултат получаваме:

Един милион долара отива при Василий Пупкин от Набережние Челни!

Функцията morpher_inflect преобразува фраза в именителен падеж (първи аргумент) във всеки падеж (втори аргумент).

Случаят може да има следните значения:

Всички низове, предадени на библиотеката, трябва да бъдат в UTF-8 кодиране. Резултатът също се връща в UTF-8. Съответна функция заукраински език

наречен morpher_ukr_inflect.

Засега работи само с фамилни имена, имена и бащини имена и се различава от руския в имената на случаите:

Преводът в множествено число все още не е реализиран в украинската версия.

Функция за разбиване на име на компоненти

Функцията morpher_split_fio разделя входния низ в масив от фамилия, собствено име, бащино име

F: Пъпкин I: Василий O: Функция за множествено число:

Ако добавите низа "mn" към втория параметър, резултатът ще бъде 238 .

множествено число

Остават на склад

В склада има останали 238 бр.

Ако първият параметър вече е множествено число, ще бъде върнато следното:

#ГРЕШКА: Параметър 1 "текст" е множествено число.

Функция за определяне на род

" y ", " f " => " y ", " n " => " oh ", " p " => " y " ); $name = "експерти"; $rod = morpher_get_gender ($name); echo "Ние ви уважаваме." $endings [$rod] . " ". $име. " !\n " ; ?>

За да определите пола на фамилните имена, собствените имена и бащините имена на украински, използвайте функцията morpher_ukr_get_gender.

Връща само "m" (мъжки) или "f" (женски)." ); // Функция за писане на числа и парични сумиФункцията morpher_spell формира изписването на числото и поставя дадената мерна единица в желания регистър: календарен ден 28 (двадесет и осем) календарни дни

morpher_spell("1.2", "процент"); //

1,2 (едно запетая и две) процентаВръща само "m" (мъжки) или "f" (женски)." , " R " ); ?> .

В резултат на това получаваме „В рамките на 28 (двадесет и осем) календарни дни“.

Допустими стойности на регистъра: I, R, D, V, T, P и техните аналози, написани на латиница, вижте.

Предложните форми (predl-o и gde) не се поддържат в тази функция.

За имената на някои парични единици функцията morpher_spell създава изписване като това:Сто двадесет и три рубли 45 копейки morpher_spell(123.45, "USD"); //Сто двадесет и три щатски долара 45 цента morpher_spell(123.45, "евро"); //?>

Сто двадесет и три евро 45 цента

Ако желаете, можете да използвате съкратени имена на парични единици, с или без точка:Сто двадесет и три рубли. 45 копейки morpher_spell(123.45, "$"); //Сто двадесет и три щатски долара 45 цента morpher_spell (123.45, " UAH " ); //?>

Сто двадесет и три UAH. 45 копейки

Или трибуквени валутни кодове на международния стандарт ISO 4217, като RUB, USD, EUR и др. В този случай името на държавата автоматично се включва в името на валутата:Сто двадесет и три руски рубли 45 копейки morpher_spell(123.45, "UAH"); //Сто двадесет и три украински гривни 45 копейки morpher_spell(123.45, "KZT"); //?>

Сто двадесет и три казахски тенге 45 tiyns

Обработка на грешки

Ако възникне грешка, всички библиотечни функции връщат ред, започващ с "#ERROR: ".
#ГРЕШКА: Параметър 1 „текст“ не трябва да е празен.
#ГРЕШКА: Параметър 2 "case" не трябва да е празен.
#ГРЕШКА: Параметър 1 "текст" не е руски.
#ГРЕШКА: Параметър 2 "case" е невалиден.

#ГРЕШКА: Параметър 1 "текст" е множествено число.

Ако не искате потребителят да вижда тези съобщения, проверете за първоначалния подниз "#ERROR: ".

Функцията morpher_inflect очаква 2 параметъра, а morpher_get_gender - един.

Ако бъде извикан с грешен брой параметри, PHP интерпретаторът издава предупреждение и продължава да изпълнява програмата. Инсталиране на модула на LinuxЗа удобство и опростяване на инсталационната процедура, дистрибуцията включва набор от скриптове, които автоматизират инсталирането на пакети, необходими за компилация, сглобяване на модули и регистрация на модули като разширение за PHP. като се има предвид

голямо разнообразие

# дистрибуции на операционна система, различни опции за конфигуриране и функции за изграждане на разширения за php, трябва да разберете, че в някои случаи, когато инсталирате модул, може да има нужда от допълнителни действия, които не се изпълняват от скриптове за сглобяване. # За да стартирате процедурата за автоматична инсталация, разопаковайте дистрибуцията във всяка директория, например morpher: # tar xf ../morpher.tar # cd php

Стартирайте скрипта за изграждане с командата:

# bash build.sh

Ако успее, файлът на модула morpher.so ще бъде компилиран и преместен в директорията с разширения на php. Модулът ще бъде регистриран в конфигурацията на php и функционалността на модула ще бъде проверена автоматично чрез тест. Текстовият изход на асемблиращия скрипт трябва да съдържа съобщение, указващо успешното тестване:

Текущи тестове... ... готови.

Вашият модул е ​​готов за използване. Директорията вече може да бъде изтрита:

# rm -r morpher

Ако имате проблеми с изграждането, трябва да се уверите, че всички необходими пакети са инсталирани и конфигурирани на вашата система. За да сглобите и работите с модула, трябва да инсталирате:

Можете да започнете само изграждането на модула без допълнителни действия с командата:

# bash compile.sh

Готовият файл ще бъде в директорията morpher/php/modules. Той трябва да бъде поставен в директорията за разширения на PHP, например:

# php-config --extension-dir/usr/lib/php5/20121212 # mv modules/morpher.so /usr/lib/php5/20121212/

Директорията на разширението може да е различна във вашата система.

# bash setup.sh

или сами задайте името на разширението във файла php.ini. Можете да проверите функционалността на разширението, като ръчно стартирате тестов PHP скрипт от командния ред:

# php -f test.phpТекущи тестове... ... готови.

Възможни грешки по време на монтажа и начини за отстраняването им

Грешка: /usr/bin/ld: не може да намери -lm

Причина: Нямате инсталиран пакет glibc-static.

Грешка: .../include/php/php_config.h:2526:30: грешка: извикването на претоварен ‘isnan(double&)’ е двусмислено. (номерът на реда може да се различава в зависимост от вашата PHP версия и конфигурация)

JavaScript е блокиран във вашия браузър. Моля, активирайте JavaScript, за да функционира сайта!

API за склонение на дума, получаване на пол (мъжки, женски), падеж, склонение и други характеристики на дума

API за склонение на думи

Параметри:
прегъвам- дума или списък от думи, разделени с интервал. Следните опцииналичен само ако се предаде една дума.
част от речта
ДескрипторПримерОписание
ВМайкасъществително име
Пчервеноприлагателно
KR_APILкрасивократко прилагателно
ИНФИНИТИВвървиинфинитив
Жидваличен глагол
Причастиеходенепричастие
ПРИЧАЩЕНИЕотивамПричастие
KR_PARTICIPLEпостроенакратко причастие
НОМЕРосемчислово (количествено)
NUMBER-Pосморедно число
MSтойместоимение-съществително
MS-PREDCнищопредикативно местоимение
MS-Pвсякаквиместоименно прилагателно
НГотинонаречие
ПРЕДТЕЦинтереснопредикат
ПРЕДПОЧИТАЙТЕподпретекст
СЪЮЗИсъюз
МЕЖДУОхмеждуметие
ЧЕСТОдобре, бихчастица
ИНВОДНСъс сигурностуводна дума
ФРАЗfloundering bays, zgiфразеологична единица
грамами– . Посочено, разделено с "," (запетая). За да изключите, посочете "-" (минус) преди грамата.
ГрамемаОписание
Род
г-нмъжествен
жрженски
срсреден род
мр-жробщ пол (сирак, пияница)
Номер
единициединствено число
мнмножествено число
Случай
тяхименителен
rdродителен падеж
дтдателен падеж
vnвинителен падеж
телевизоринструментална
прпредложни
звуквокатив (баща, бог)
2 втори родителен падеж или втори предлог
време
nstсегашно време
щебъдеще време
prshминало време
Лице
първо лице
второ лице
трета страна
Анимация
одоживявам
Нонеодушевени
Преглед
Св.перфектен външен вид
nsнесъвършен изглед
Преходност
npпреход
ненепреходен
Залог
dstактивен глас
страницастрадателен залог
други
0 неизменен
безлнеличен глагол
pvlповелително наклонение (повелително)
привличанепритежателен (не се използва)
предишнапревъзходна степен (за прилагателни)
сравнявамсравнителна степен (за прилагателни)
качествокачествено прилагателно
Семантични особености
Имеиме (Иван, Михаил)
женафамилия (Иванов, Сидоров)
отчетбащино име (Иванович, Михайлович)
локтопоним (Москва, Лена, Еверест)
съкрсъкращение (KPSS, RONO)
оргорганизация
въпросвъпросително наречие
посочвамдемонстративно наречие
жаргонжаргон
разгражданеразговорен
архархаизъм
Н.В.Впечатна грешка
поетпоетичен
профпрофесионализъм
инфо– показване на всяка форма като масив с допълнителна информация

Http://site/service/api.php?inflect=Magadan&json

("0":"МАГАДАН","1":"МАГАДАН","2":"МАГАДАН","3":"МАГАДАН","4":"МАГАДАН","5":"МАГАДАН"," 6":"МАГАДАНА","7":"МАГАДАНА","8":"МАГАДАНА","9":"МАГАДАНА","лимит":38)

Http://site/service/api.php?inflect=Magadan












Http://site/service/api.php?inflect=Rostov-on-Don&xml

<0>РОСТОВ НА ДОН <1>РОСТОВ НА ДОН <2>РОСТОВ НА ДОН <3>РОСТОВ НА ДОН <4>РОСТОВ НА ДОН 46

За да получите всички неодушевени прилагателни в множествено число от думата "сватба", извикайте:

Https://site/service/api.php?inflect=wedding&json&partofspeech=P&grammems=NO,MN&info
Вземете:
("0":("word":"WEDDING","partofspeech":"P","grammems":["DT","QUALITY","MN","NO","OD"]), " 1":("word":"СВАТБА","partofspeech":"P","grammems":["IM","QUALITY","MN","BUT","OD"]), "2" :("word":"СВАТБА","partofspeech":"P","grammems":["VN","KACH","MN","НО"]), "3":("дума": "СВАТБА","partofspeech":"P","grammems":["QUALITY","MN","BUT","OD","RD"]), "4":("word":"СВАТБА ","partofspeech":"P","grammems":["QUALITY","MN","BUT","OD","PR"]), "5":("word":"WEDDING" " partofspeech":"P","grammems":["QUALITY","MN","NO","OD","TV"]) ,,"limit":19) Без информационния параметър:
http://site/service/api.php?inflect=wedding&json&partofspeech=P&grammems=NO,MN
("0":"СВАТБА","1":"СВАТБА","2":"СВАТБА","3":"СВАТБА", "4":"СВАТБА","5":"СВАТБА"," граница":19)

API за получаване на дума пол, име: мъжки, женски

API за получаване на пол: мъж, жена по име. Използвайки този API, можете да получите пола на потребителя чрез потребителското име.

Това ще премахне необходимостта от попълване на допълнителен формуляр по време на регистрация. Много популярен проблемУеб програмисти , ТоваСклонение на думи в PHP . Например, трябва да покажете преди колко минути е оставено съобщение. Можете просто да напишете число и дума "минути ". Но тогава ще бъде написано много странно, например, "", "1 минути 2 минути " и т.н. Всъщност безСклонение на думи в PHP

Не можете да го направите, освен ако, разбира се, не искате да пишете на руски. Проблемът ще изглежда много труден за начинаещите, но всъщност има определен модел за склонението на думите. Вижте сами: " 1 минута, 2 минути, 5 минути, 11 минути, 19 минути, 21 минути, 22 минути, 25 минути и така нататък 1, 21, 31, 41 „Виждате модел? - винаги ще бъде"минута ". Ако най-малката цифра е по-голяма 1-во 5 и по-малко 100 , докато самото число, когато е разделено на 20 има остатък по-голям 12 (това е, например, не число 112 и не ), тогава ще има "минути . Например, трябва да покажете преди колко минути е оставено съобщение. Можете просто да напишете число и дума "".

". В други случаи "
функция getWord($номер, $суфикс) (
$ ключове = масив (2, 0, 1, 1, 1, 2);
$mod = $число % 100;< 20) ? 2: $keys;
$suffix_key = ($mod > 7 && $mod
}
върне $suffix[$suffix_key];

$масив = масив("минута", "минути", "минути");
";
$n = 21;
ехо "$n $дума
$масив = масив("минута", "минути", "минути");
";
$n = 11;
ехо "$n $дума
$масив = масив("минута", "минути", "минути");
";
?>

$word = getWord($n, $array); , Това$n = 4; . Например, трябва да покажете преди колко минути е оставено съобщение. Можете просто да напишете число и дума "Като стартирате този скрипт, ще видите това става с гръм и трясък. Мога само да добавя, че в допълнение към "", ""може да има"", "ден", "часчовешки компютър.

“ и всички други съществителни, които

намаляват в зависимост от числотопясъчник

г-н Олимпия

  • 16 ноември 2013 г. в 15:01 ч

Склонение на пълно име - NameCaseLib PHP Framework

Днес ще говоря за една малка, но много полезна рамка - NameCaseLib.

Мисля, че мнозина са се сблъсквали със ситуация, при която е било необходимо да се откаже фамилията, собственото име и бащиното име на човек по случай. Тази рамка ще ни помогне да се отървем от многобройните „велосипеди“.

Монтаж

За да работи NameCaseLib, имаме нужда от PHP5 и библиотеката php_mbstring, за да работим с текст във формат UTF-8.

Страхотно, сега остава само да свържем самата рамка, за това ще изтеглим необходимите файлове.

NameCaseLib поддържа два езика: руски и украински. Файлът NCL.NameCase.ru.php съдържа руски правила за склонение, съответно NCL.NameCase.ua.php, украински. Папката NCL съдържа самото „ядро“ на рамката, тоест набор от основни функции.

И така, нека създадем файл във формат .php и да проверим функционалността на тази рамка.

q("Максимов Александър Василиевич");

# Изведете получения масив. (Забележка: връща прост индексируем масив) var_dump($array); ?> Съответно, по същия начин можем да наклоним украинските пълни имена чрез свързванеукраински правила

деклинация. Но нека все пак да разгледаме какви параметри съдържа методътр

, и как иначе може да се използва?

Този метод има 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 – лична бележка

  1. Бележки
  2. Редът на името няма значение.

Няма значение в кой регистър е посочено пълното име, след деклиниране методът връща запазения регистър на буквите.

Дефиниция на част от пълното име

getFullNameFormat("Максимов Александър Василиевич");

/* Получаваме формат като: S F N, където: - S - Фамилия - N - Собствено име - F - Бащино име */ echo $fullName; ?>

Но какво трябва да направите, ако рамката все още не може правилно да определи как да отхвърли избраното от вас име?

За тази цел библиотеката предоставя метода qFullName, който ви позволява да посочите фамилията, собственото име, бащиното име и пола на дадено лице в определена последователност.

qFullName("Максимов", "Александър", "Василиевич", NCL::$MAN, NCL::$TVORITELN, "S N F")."\n"; ?>

Резултати

NameCaseLib е наистина удобна за потребителя рамка, която включва много полезни функции. Сайтът разполага с пълна документация на руски език. Често има нуждапроменят имена в PHP . Съгласете се, че фразата "Добави като приятел Ilya "звучи много по-зле от"Добавете Ilya като приятел ". Ето защоСклонение на имената по падеж в PHP

Това се изисква доста често и в тази статия ще ви кажа как можете да го приложите на вашия уебсайт. Веднага ще кажа товаидеален вариант , уви, не. Първият вариант е много очевиден: намерете база данни с имена, които ще бъдат във всички случаи, и добавете тази таблица към вашата. След това по име в именителен падеж потърсете съответния падеж в базата данни. Недостатъците тук са очевидни:.

огромна база данни, не може да покрие всички имена, допълнително натоварване на сървъра Вторият вариант е да напишете свой собственклас от склонения на имена в PHP 100% , или използвайте готов. Тъй като правилата на руския език са доста сложни, освен това има много изключения, следователно ще е необходима много голяма библиотека и дори това е далеч от спасение. Най-популярната от всички библиотеки, които се занимаватСклонение на имена в PHP

, е NameCaseLib.

След като изтеглите тази библиотека и я поставите на уебсайта си, можете да я използвате по следния начин:
Require_once "NCL.NameCase.ru.php"; // Свържете руската библиотека
$case = нов NCLNameCaseRu(); // Създаване на обект от класа NCLNameCaseRu
$масив = $case->q("Русаков Михаил Юриевич"); // Получаваме масив от 6 елемента, съответстващи на 6 случая, в които ще се появи входният низ
?>

print_r($масив); // Извеждане на масива Както можете да видите, използването на библиотеката е много просто. От друга страна, моятосновен съвет ще бъде следното:Ако е възможно, избягвайте напълно необходимостта да сменяте думите. "звучи много по-зле от". Все пак, понякога хората ще въведат нещо, което не може да бъде склонено по никакъв начин, и опитите да го предизвикат ще изглеждат смешни. Не е необходимо да пишете " "Може да се напише просто"Добави като приятел