Модулът 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 | минало време | |
Лице | ||
1л | първо лице | |
2л | второ лице | |
3л | трета страна | |
Анимация | ||
од | оживявам | |
Но | неодушевени | |
Преглед | ||
Св. | перфектен външен вид | |
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
За да получите всички неодушевени прилагателни в множествено число от думата "сватба", извикайте:
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 и да проверим функционалността на тази рамка.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод q - склоняет Фамилию, Имя и Отчество человека по правилам пола. $array = $case->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 – лична бележка
- Бележки
- Редът на името няма значение.
Няма значение в кой регистър е посочено пълното име, след деклиниране методът връща запазения регистър на буквите.
Дефиниция на част от пълното име
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод getFullNameFormat - разбивает строку и возвращает формат, в котором записано имя. $fullName = $case->getFullNameFormat("Максимов Александър Василиевич");
/* Получаваме формат като: S F N, където: - S - Фамилия - N - Собствено име - F - Бащино име */ echo $fullName; ?>
Но какво трябва да направите, ако рамката все още не може правилно да определи как да отхвърли избраното от вас име?
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Параметры метода: qFullName(Фамилия, Имя, Отчество, пол, падеж, формат); Все параметры являются необязательными, если, например, не указать пол - система сама определит его. echo $nc->За тази цел библиотеката предоставя метода 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($масив); // Извеждане на масива Както можете да видите, използването на библиотеката е много просто. От друга страна, моятосновен съвет ще бъде следното:Ако е възможно, избягвайте напълно необходимостта да сменяте думите. "звучи много по-зле от". Все пак, понякога хората ще въведат нещо, което не може да бъде склонено по никакъв начин, и опитите да го предизвикат ще изглеждат смешни. Не е необходимо да пишете " "Може да се напише просто"Добави като приятел