Bieži vien ir vajadzība locīt vārdus PHP. Piekrītu, ka frāze " Pievienot kā draugu Ilya"izklausās daudz sliktāk nekā" Pievienot Ilju kā draugu". Tāpēc Vārdu deklinācija pēc reģistra PHP Tas ir nepieciešams diezgan bieži, un šajā rakstā es jums pastāstīšu, kā jūs varat to ieviest savā vietnē.
Uzreiz teikšu, ka diemžēl ideāla varianta nav. Pirmā iespēja ir ļoti acīmredzama: atrodiet vārdu datu bāzi, kas būs visos gadījumos, un pievienojiet šo tabulu savai. Pēc tam pēc nosaukuma nominatīvā gadījuma datubāzē meklējiet atbilstošo gadījumu. Trūkumi šeit ir acīmredzami: milzīga datu bāze, nevar aptvert visus nosaukumus, papildu slodze uz serveri.
Otra iespēja ir rakstīt savu vārdu deklināciju klase PHP, vai izmantojiet gatavu. Tā kā noteikumi krievu valodā ir diezgan sarežģīti, kā arī ir daudz izņēmumu, tāpēc jums būs nepieciešama ļoti liela bibliotēka, un pat tas ir tālu no 100% glābšana. Populārākā no visām bibliotēkām, kas nodarbojas ar Vārdu deklinācija PHP, ir NameCaseLib .
Pēc šīs bibliotēkas lejupielādes un ievietošanas savā vietnē varat to izmantot šādi:
$case = jauns NCLNnameCaseRu(); // Izveidojiet klases NCLNameCaseRu objektu
$masīvs = $case->q("Rusakovs Mihails Jurjevičs"); // Mēs iegūstam 6 elementu masīvu, kas atbilst 6 gadījumiem, kuros parādīsies ievades virkne
print_r($masīvs); // Izvadiet masīvu
?>
Kā redzat, bibliotēkas lietošana ir ļoti vienkārša. No otras puses, mans galvenais padoms būtu šāds: Ja iespējams, izvairieties no nepieciešamības locīt vārdus.. Tomēr dažreiz cilvēki ieviesīs kaut ko tādu, kas nekādā veidā nevar būt pakļauts, un mēģinājumi to pamudināt izskatīsies smieklīgi. Nav nepieciešams rakstīt " Pievienot Ilju kā draugu"To var uzrakstīt vienkārši" Pievienot kā draugu"Iļjas lapā.
Modulis morpher.so ir paredzēts vārdu un frāžu reģistrēšanai - uzvārdi, vārdi un patronīmi, pilsētu un preču nosaukumi - krievu un ukraiņu valodā.
Deklinācijas funkcija pa gadījumiem
Viens miljons dolāru aiziet uznoNaberežnije Čelnijs" , " stienis " ); ?> !
Rezultātā mēs iegūstam:
Viens miljons dolāru tiek Vasilijam Pupkinam no Naberežnije Čelnija!
Funkcija morpher_inflec pārvērš frāzi nominatīvajā gadījumā (pirmais arguments) jebkurā gadījumā (otrais arguments). Lietam var būt šādas nozīmes:
Visām bibliotēkai nodotajām virknēm ir jābūt UTF-8 kodējumā. Rezultāts tiek atgriezts arī UTF-8.
Ukraiņu valodai atbilstošo funkciju sauc par morpher_ukr_inflec. Līdz šim tas darbojas tikai ar uzvārdiem, vārdiem un patronimiem un atšķiras no krievu valodas lietu nosaukumos:
Tulkojums daudzskaitlī ukraiņu valodā vēl nav ieviests.
Funkcija nosaukuma sadalīšanai komponentos
Funkcija morpher_split_fio sadala ievades virkni uzvārda, vārda un otrā vārda masīvā
F: ķirbis I: Vasilijs O:
Pluralizācijas funkcija
Ja otrajam parametram pievienosit virkni "mn", rezultāts būs daudzskaitlī:
Atlikums noliktavā 238 .
Noliktavā ir palikuši 238 pokeri.
Ja pirmais parametrs jau ir daudzskaitlī, tiks atgriezts šāds:
#KĻŪDA: 1. parametra "teksts" ir daudzskaitlī.
Ģints noteikšanas funkcija
" y " , " f " => " y " , " n " => " oh " , " p " => " y " ); $name = "eksperti"; $rod = morpher_get_gender ($nosaukums); atbalss "Mēs jūs cienām." $beidzas [ $rod ] . " ". $vārds . " !\n " ; ?>
Lai noteiktu uzvārdu, vārdu un uzvārdu dzimumu ukraiņu valodā, izmantojiet funkciju morpher_ukr_get_gender. Tas atgriež tikai "m" (vīrietis) vai "f" (sieviete).
Ciparu un naudas summu rakstīšanas funkcija
Funkcija morpher_spell veido skaitļa pareizrakstību un ievieto doto mērvienību vajadzīgajā gadījumā:
kalendārā diena" ); // 28 (divdesmit astoņas) kalendārās dienas morpher_spell("1,2", "procenti"); // 1,2 (viens komats divi) procenti morpher_spell(2, "diena"); // 2 (divas) dienas ?>
Ja jums ir jāievieto vārdi tekstā noteiktā gadījumā, norādiet reģistru kā trešo parametru:
Laikākalendārā diena" , " R " ); ?> .
Rezultātā mēs saņemam “28 (divdesmit astoņu) kalendāro dienu laikā”.
Pieņemamās reģistra vērtības: I, R, D, V, T, P un to analogi, rakstīti latīņu valodā, sk. Prepozīcijas formas (predl-o un gde) šajā funkcijā netiek atbalstītas.
Dažu naudas vienību nosaukumiem funkcija morpher_spell rada šādu rakstību:
Simts divdesmit trīs rubļi 45 kapeikas morpher_spell(123,45, "USD"); // Simts divdesmit trīs ASV dolāri 45 centi morpher_spell(123,45, "eiro"); // Simts divdesmit trīs eiro 45 centi?>
Ja vēlaties, varat izmantot saīsinātus naudas vienību nosaukumus ar punktu vai bez tā:
Simts divdesmit trīs rubļi. 45 kapeikas morpher_spell(123,45, "$"); // Simts divdesmit trīs ASV dolāri 45 centi morpher_spell (123,45, " UAH " ); // Simts divdesmit trīs UAH. 45 kapeikas?>
Vai arī starptautiskā standarta ISO 4217 valūtu trīs burtu kodi, piemēram, RUB, USD, EUR utt. Šajā gadījumā valūtas nosaukumā tiek automātiski iekļauts valsts nosaukums:
Simt divdesmit trīs Krievijas rubļi 45 kapeikas morpher_spell(123,45, "UAH"); // Simt divdesmit trīs Ukrainas grivnas 45 kapeikas morpher_spell(123.45, "KZT"); // Simt divdesmit trīs Kazahstānas tenge 45 tiyns?>
Kļūda apstrādē
Ja rodas kļūda, visas bibliotēkas funkcijas atgriež rindu, kas sākas ar "#ERROR:" .
#KĻŪDA: 1. parametra “text” lauks nedrīkst būt tukšs. |
#KĻŪDA: 2. parametra lauks "case" nedrīkst būt tukšs. |
#KĻŪDA: 1. parametra "teksts" nav krievu valoda. |
#KĻŪDA: 2. parametra "case" nav derīgs. |
#KĻŪDA: 1. parametra "teksts" ir daudzskaitlī. |
Ja nevēlaties, lai lietotājs redzētu šos ziņojumus, pārbaudiet sākotnējo apakšvirkni "#ERROR:" .
Funkcija morpher_inflec paredz 2 parametrus, bet morpher_get_gender — vienu. Ja tiek izsaukts nepareizs parametru skaits, PHP tulks izdod brīdinājumu un turpina programmas izpildi.
Moduļa instalēšana operētājsistēmā Linux
Sākot ar versiju 1.3.0, mēs nodrošinām PHP Linux versijas moduli iepriekš kompilētu morpher.so failu veidā, kas iesaiņoti arhīvā. Šie faili ir piemēroti lietošanai šādos Linux izplatījumos:
- Debian (Jessie, Stretch, Wheezy);
- Ubuntu (Trusty, Xenial, Cosmic, Bionic);
- CentOS 7.
Viss, kas jums jādara, ir jāraksta mums, lai iegūtu morpher.so savam izplatīšanai, izņemiet morpher.so no arhīva un morpher.so kā PHP paplašinājumu. Taču šāda moduļa binārā savietojamība ar jūsu sistēmu netiek garantēta, jo moduli veidojam tikai uz “tīrām” sistēmām ar noklusējuma iestatījumiem un ar to PHP versiju, ko piedāvā sistēmas pakotņu pārvaldnieks. Ja modulis nav saderīgs, PHP nevarēs to ielādēt kā paplašinājumu. Ja neviens no gatavajiem moduļa failiem nav piemērots jūsu sistēmai, jums ir jāizveido modulis no nodrošinātā pirmkoda.
Moduļu montāžas procedūras ērtībai un vienkāršošanai izplatīšanas komplektā ir iekļauts skriptu komplekts, kas automatizē kompilēšanai nepieciešamo pakotņu instalēšanu, moduļu montāžu un moduļu reģistrāciju kā PHP paplašinājumu. Ņemot vērā plašo operētājsistēmu izplatīšanu, dažādas konfigurācijas iespējas un php paplašinājumu komplektēšanas iespējas, jums jāsaprot, ka dažos gadījumos, instalējot moduli, var būt nepieciešamas papildu darbības, kuras neīsteno montāžas skripti.
Lai sāktu automātisko instalēšanas procedūru, izsaiņojiet izplatīšanu jebkurā direktorijā, piemēram, morpher:
# mkdir morpher # cd morpher # tar xf ../morpher.tar # cd phpPalaidiet veidošanas skriptu ar komandu:
# bash build.shJa tas izdosies, moduļa fails morpher.so tiks apkopots un pārvietots uz php paplašinājumu direktoriju. Modulis tiks reģistrēts php konfigurācijā, un moduļa funkcionalitāte tiks pārbaudīta automātiski, izmantojot testu. Montāžas skripta teksta izvadē jāiekļauj ziņojums, kas norāda uz veiksmīgu testēšanu:
Notiek pārbaudes... ... pabeigts.
Jūsu modulis ir gatavs lietošanai. Tagad direktoriju var izdzēst:
# rm -r morpherJa jums ir problēmas ar būvniecību, jums ir jāpārliecinās, vai jūsu sistēmā ir instalētas un konfigurētas visas nepieciešamās pakotnes. Lai saliktu un darbinātu moduli, jāinstalē:
Jūs varat sākt tikai moduļa veidošanu bez papildu darbībām ar komandu:
# bash compile.shPēc veiksmīgas kompilācijas fails morpher.so atradīsies direktorijā morpher/php/modules.
Fails morpher.so ir jāievieto PHP paplašinājumu direktorijā, piemēram:
# php-config -- paplašinājuma direktorijs/usr/lib/php5/20121212 # mv modules/morpher.so /usr/lib/php5/20121212/Paplašinājuma direktorijs jūsu sistēmā var atšķirties.
# bash setup.shvai pats norādiet paplašinājuma nosaukumu failā php.ini. Varat pārbaudīt paplašinājuma funkcionalitāti, manuāli palaižot testa PHP skriptu no komandrindas:
# php -f test.php Notiek pārbaudes... ... pabeigts.Iespējamās kļūdas montāžas laikā un to novēršanas veidi
Kļūda: /usr/bin/ld: nevar atrast -lm
Iemesls: jums nav instalēta glibc-static pakotne.
Kļūda: .../include/php/php_config.h:2526:30: kļūda: pārslogotas 'isnan(double&)' izsaukums ir neskaidrs. (rindas numurs var atšķirties atkarībā no jūsu PHP versijas un konfigurācijas)
Ļoti populāra problēma Tīmekļa programmētāji, Šis Vārdu deklinācija PHP. Piemēram, jums ir jāparāda, cik pirms minūtēm tika atstāts ziņojums. Jūs varat vienkārši uzrakstīt ciparu un vārdu " minūtes". Bet tad tas būs ļoti dīvaini rakstīts, piemēram, " 1 minūte", "2 minūtes" un tā tālāk. Patiesībā bez Vārdu deklinācija PHP Jūs to nevarat izdarīt, ja vien, protams, nevēlaties rakstīt krieviski.
Iesācējiem problēma šķitīs ļoti sarežģīta, taču patiesībā vārdu deklinācijai ir zināms modelis. Paskaties pats: " 1 minūte, 2 minūtes, 5 minūtes, 11 minūtes, 19 minūtes, 21 minūte, 22 minūtes, 25 minūtes un tā tālāk"Redzi modeli? 1, 21, 31, 41 - vienmēr būs" minūte". Ja vismazāk nozīmīgais cipars ir lielāks 1 un mazāk 5 , savukārt pats skaitlis, dalīts ar 100 atlikums ir lielāks 20 (tas, piemēram, nav skaitlis 12 un nē 112 ), tad būs " minūtes". Citos gadījumos" minūtes".
funkcija getWord($skaitlis, $sufikss) (
$taustiņi = masīvs(2, 0, 1, 1, 1, 2);
$mod = $skaitlis % 100;
$suffix_key = ($mod > 7 && $mod< 20) ? 2: $keys;
return $suffix[$suffix_key];
}
$masīvs = masīvs("minūte", "minūtes", "minūtes"); $n = 21;
echo "$n $word
";
$n = 11;
$vārds = getWord($n, $masīvs);
echo "$n $word
";
$n = 4;
$vārds = getWord($n, $masīvs);
echo "$n $word
";
?>
Palaižot šo skriptu, jūs to redzēsit Vārdu deklinācija PHP notiek ar blīkšķi. Es varu tikai piebilst, ka papildus " minūtes"varētu būt" diena", "stunda", "Cilvēks", "dators" un visi citi lietvārdi, kas samazinās atkarībā no cipara.
JavaScript jūsu pārlūkprogrammā ir bloķēts. Lūdzu, iespējojiet JavaScript, lai vietne darbotos!
API vārda deklinācijai, dzimuma iegūšanai (vīrišķais, sievišķais), reģistram, deklinācijai un citām vārda pazīmēm
Word Declension API
Iespējas:locīt- vārds vai vārdu saraksts, kas atdalīts ar atstarpi. Tālāk norādītās iespējas ir pieejamas tikai tad, ja tiek pārraidīts viens vārds.
runas daļa –
Deskriptors | Piemērs | Apraksts |
---|---|---|
C | Māte | lietvārds |
P | sarkans | īpašības vārds |
KR_APIL | skaists | īss īpašības vārds |
INFINITĪVA | aiziet | infinitīvs |
G | nāk | personiskais darbības vārds |
DAĻA DAĻA | pastaigas | divdabis |
DAĻA DAĻA | iet | divdabis |
KR_PARTICIPLE | celta | īsais divdabis |
NUMBER | astoņi | cipars (kvantitatīvs) |
NUMBER-P | astotais | kārtas skaitlis |
JAUNKUNDZE | Viņš | vietniekvārds-lietvārds |
MS-PREDC | nekas | predikatīvs vietniekvārds |
MS-P | jebkura | pronomināls īpašības vārds |
N | Forši | apstākļa vārds |
SENCIS | Interesanti | predikāts |
SAGATAVOŠANA | zem | iegansts |
SAVIENĪBA | Un | savienība |
STARP | Ak! | starpsauciens |
BIEŽA | nu būtu | daļiņa |
INVODN | Noteikti | ievadvārds |
PHRAZ | plekstu līči, zgi | frazeoloģiskā vienība |
Grammema | Apraksts | |
---|---|---|
Ģints | ||
Mr | vīrišķīgs | |
zhr | sievišķīgs | |
Trešd | neitrāls dzimums | |
kungs-žr | vispārējais dzimums (bārenis, dzērājs) | |
Numurs | ||
vienības | vienskaitlis | |
pl | daudzskaitlis | |
Lieta | ||
viņiem | nominatīvs | |
rd | ģenitīvs | |
dt | datīvs | |
vn | akuzatīvs | |
TV | instrumentāls | |
utt | prievārdi | |
skaņu | aicinošs (tēvs, dievs) | |
2 | otrais ģenitīvs vai otrais prievārda gadījums | |
Laiks | ||
nst | pašreizējais laiks | |
gribu | Nākotnes forma | |
prsh | pagātnes forma | |
Seja | ||
1l | pirmā persona | |
2l | otrā persona | |
3l | trešā ballīte | |
Animācija | ||
od | animēt | |
Bet | nedzīvs | |
Skatīt | ||
Sv. | ideāls skats | |
ns | nepilnīga suga | |
Transitivitāte | ||
np | pāreja | |
ne | intransitīvs | |
Ķīla | ||
dst | Aktīvā balss | |
lappuse | pasīvā balss | |
Cits | ||
0 | nemainīgs | |
bezl | bezpersonisks darbības vārds | |
pvl | imperatīvs noskaņojums (imperative) | |
pievilcība | īpašumtiesības (nav lietots) | |
iepriekj | superlatīvais (īpašības vārdiem) | |
salīdzināt | salīdzinošais grāds (īpašības vārdiem) | |
kvalitāti | kvalitatīvs īpašības vārds | |
Semantiskās iezīmes | ||
Vārds | vārds (Ivans, Mihails) | |
femme | uzvārds (Ivanovs, Sidorovs) | |
Ziņot | patronīms (Ivanovičs, Mihailovičs) | |
lok | toponīms (Maskava, Ļena, Everests) | |
saīsinājums | saīsinājums (KPSS, RONO) | |
org | organizācija | |
jautājums | jautājošs apstākļa vārds | |
norādīt | demonstratīvs apstākļa vārds | |
slengs | žargons | |
sadalīšanās | sarunvaloda | |
arka | arhaisms | |
HRH | drukas kļūda | |
dzejnieks | poētisks | |
prof | profesionalitāte |
Http://site/service/api.php?inflect=Magadan&json
("0":"MAGADAN","1":"MAGADAN","2":"MAGADAN","3":"MAGADAN","4":"MAGADAN","5":"MAGADAN"," 6":"MAGADANY","7":"MAGADANA","8":"MAGADANA","9":"MAGADANA","limit":38)
Http://site/service/api.php?inflec=Magadan
Http://site/service/api.php?inflect=Rostov-on-Don&xml
Lai iegūtu visus nedzīvos daudzskaitļa īpašības vārdus no vārda "kāzas", zvaniet:
Https://site/service/api.php?inflect=wedding&json&partofspeech=P&grammems=NO,MN&info
Gūt:
("0":("vārds":"KĀZAS","runas daļa":"P","grammems":["DT","KVALITĀTE","MN","NO","OD"]), " 1":("vārds":"KĀZAS","runas daļa":"P","grammems":["IM","KVALITĀTE","MN","BET","OD"]), "2" :("vārds":"KĀZAS","runas daļa":"P","grammems":["VN","KACH","MN","BET"]), "3":("vārds": "KĀZAS","runas daļa":"P","grammems":["KVALITĀTE","MN","BET","OD","RD"]), "4":("vārds":"KĀZAS" ""runas daļa":"P","grammems":["KVALITĀTE","MN","BUT","OD","PR"]), "5":("vārds":"KĀZAS" " runas daļa":"P","grammems":["KVALITĀTE","MN","NO","OD","TV"]) ,,"limit":19) Bez informācijas parametra:
http://site/service/api.php?inflect=wedding&json&partofspeech=P&grammems=NO,MN
("0":"KĀZAS","1":"KĀZAS","2":"KĀZAS","3":"KĀZAS", "4":"KĀZAS","5":"KĀZAS"," ierobežojums":19)
API vārda dzimuma, vārda iegūšanai: vīrietis, sieviete
API dzimuma noteikšanai: vīrietis, sieviete pēc vārda. Izmantojot šo API, varat iegūt lietotāja dzimumu, izmantojot lietotājvārdu. Tas novērsīs nepieciešamību reģistrācijas laikā aizpildīt papildu veidlapu.
Sveiks, Habrahabr!
Šodien es runāšu par nelielu, bet ļoti noderīgu ietvaru - NameCaseLib.
Domāju, ka daudzi ir saskārušies ar situāciju, kad bija nepieciešams atteikt personas uzvārdu, vārdu un uzvārdu atsevišķi. Šis ietvars palīdzēs mums atbrīvoties no daudziem “velosipēdiem”.
Uzstādīšana
Lai NameCaseLib darbotos, mums ir nepieciešams PHP5 un php_mbstring bibliotēka, lai strādātu ar tekstu UTF-8 formātā.Lieliski, tagad atliek tikai savienot pašu ietvaru, šim nolūkam mēs lejupielādēsim nepieciešamos failus.
NameCaseLib atbalsta divas valodas: krievu un ukraiņu. Fails NCL.NameCase.ru.php satur krievu deklinācijas noteikumus, NCL.NameCase.ua.php, attiecīgi, ukraiņu valodas. NCL mapē ir ietverts pats ietvara “kodols”, tas ir, pamatfunkciju kopums.
Tātad, izveidosim failu .php formātā un pārbaudīsim šī ietvara funkcionalitāti.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод q - склоняет Фамилию, Имя и Отчество человека по правилам пола. $array = $case->q ("Maksimovs Aleksandrs Vasiļjevičs"); # Izvadiet iegūto masīvu. (Piezīme: atgriež vienkāršu indeksējamu masīvu) var_dump($masīvs); ?>
Attiecīgi, tādā pašā veidā mēs varam atteikties no ukraiņu pilnajiem vārdiem, savienojot ukraiņu deklinācijas noteikumus.
Bet tomēr apskatīsim, kādus parametrus satur metode q, un kā vēl to var izmantot?
Šai metodei ir 3 parametri, no kuriem 2 var izlaist. Pirmais parametrs ir personas pilns vārds, otrais ir reģistrs (tālāk es sniegšu konstantu sarakstu; ja reģistrs nav norādīts (NULL), metode atgriež visus gadījumus), bet trešais ir personas dzimums. (Zemāk ir norādītas arī konstantes; ja nenorādīsiet dzimumu (NULL), metode to noteiks pati)
Konstantes
Lai norādītu dzimumu, tiek izmantotas konstantes:- NCL::$MAN – vīriešu dzimums
- NCL::$WOMAN – sieviete
Lai norādītu krievu valodas gadījumus:
- NCL::$IMENITLN — nominatīvais burts
- NCL::$RODITLN — ģenitīvais burts
- NCL::$DATELN — datīvu reģistrs
- NCL::$VINITELN — akuzatīvs gadījums
- NCL::$TVORITELN - instrumentālais korpuss
- NCL::$PREDLOGN — prievārda reģistrs
Lai norādītu ukraiņu valodas gadījumus:
- NCL::$UaNazyvnyi – nosaukuma plāksnīte
- NCL::$UaRodovyi — vispārīgs skats
- NCL::$UaDavalnyi – ilgtermiņa administrators
- NCL::$UaZnahidnyi – slavens video
- NCL::$UaOrudnyi – ieroču displejs
- NCL::$UaMiszevyi – miscevyi vidminok
- NCL::$UaKlychnyi – personīga piezīme
Piezīmes
- Nosaukuma secībai nav nozīmes.
- Nav svarīgi, kurā gadījumā tiek norādīts pilns vārds, pēc deklinācijas metode atgriež saglabāto burtu gadījuma raksturu.
Pilna vārda daļas definīcija
Izmantojot metodi getFullNameFormat, mēs varam noteikt daļu vai kuras pilnā vārda daļas mēs izmantojam.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Метод getFullNameFormat - разбивает строку и возвращает формат, в котором записано имя. $fullName = $case->getFullNameFormat("Maksimovs Aleksandrs Vasiļjevičs"); /* Mēs iegūstam formātu, piemēram: S F N, kur: - S - Uzvārds - N - Vārds - F - Vidējais vārds */ echo $fullName; ?>
Bet kas jums jādara, ja sistēma joprojām nevar pareizi noteikt, kā noraidīt jūsu izvēlēto vārdu?
Šim nolūkam bibliotēka nodrošina qFullName metodi, kas ļauj noteiktā secībā norādīt personas uzvārdu, vārdu, uzvārdu un dzimumu.
# Указываем кодировку. header("Content-type: text/html; charset=utf-8"); # Подключаем русские правила склонения. require "NCL.NameCase.ru.php"; # Объявляем объект класса. $case = new NCLNameCaseRu(); # Параметры метода: qFullName(Фамилия, Имя, Отчество, пол, падеж, формат); Все параметры являются необязательными, если, например, не указать пол - система сама определит его. echo $nc->qFullName("Maksimovs", "Aleksandrs", "Vasiļjevičs", NCL::$MAN, NCL::$TVORITELN, "S N F")."\n"; ?>