Teko pasirašyti kelias funkcijas kad linksniuotų vardą ir pavardę pagal tris linksnius, kad kreipimasis sistemoje atrodytų natūralesnis. Žemiau pateikti 3 kodų blokai veikia tik su Lietuviškais vardais ir pavardėmis, kiek teko bandyti tai keičia tinkamai visada jeigu vardas ir pavardė yra sąmoningi :P – jeigu kokią klaidą pastebėtumėte, prašau pranešti komentaruose :)
Nesiu aš kietas PHP programeris tai ir kodas gal bus kiek lievokas, tačiau atitinka mano lūkesčius ir veikia. Good enough :D
Viską galima parsisiųsti iš čia.
Kodas naudininko linksniui (kam?):
<?php /* Autorius: Kulverstukas Data: 2014.04.15 Svetainė: http://9v.lt ; Evilzone.org ; Programisiai.lt */ /* Aprašymas: Funkcija tikrina ar žodis baigiasi su nurodyta galūne, gražina TRUE jei taip. */ function endsWith($haystack, $needle) { return $needle === "" || substr($haystack, -strlen($needle)) === $needle; } /* Aprašymas: Funkcija priima vardą arba pavardę (turi būti vienas) ir gražina pakeistą į naudininko linksnį (kam?). Pavyzdžiai: Drasius Kedys -> Drasiui Kedžiui Dalia Grybauskaitė -> Daliai Grybauskaitei Andrius Kubilius -> Andriui Kubiliui Loreta Graužinienė -> Loretai Graužinienei Natalija Bunkė -> Natalijai Bunkei */ function pakeistiVardaNaudininku($str) { $rtn = $str; $galunes = array(array("as", "ui"), array("a", "ai"), array("ė", "ei"), array("e", "ei"), array("tis", "čiui"), array("dys", "džiui"), array("is", "iui"), array("ys", "iui"), array("us", "ui")); for ($i = 0; $i < count($galunes); $i++) { if (endsWith($str, $galunes[$i][0])) { $rtn = substr($str, 0, strlen($str)-strlen($galunes[$i][0])).$galunes[$i][1]; break; } } return $rtn; } echo pakeistiVardaNaudininku('Drasius'); echo pakeistiVardaNaudininku(' Kedys'); echo '<br />'; echo pakeistiVardaNaudininku('Dalia'); echo pakeistiVardaNaudininku(' Grybauskaitė'); echo '<br />'; echo pakeistiVardaNaudininku('Andrius'); echo pakeistiVardaNaudininku(' Kubilius'); echo '<br />'; echo pakeistiVardaNaudininku('Loreta'); echo pakeistiVardaNaudininku(' Graužinienė'); echo '<br />'; echo pakeistiVardaNaudininku('Natalija'); echo pakeistiVardaNaudininku(' Bunkė'); echo '<br />'; ?>
Kodas kilmininko linksniui (ko?):
<?php /* Autorius: Kulverstukas Data: 2014.04.15 Svetainė: http://9v.lt ; Evilzone.org ; Programisiai.lt */ /* Aprašymas: Funkcija tikrina ar žodis baigiasi su nurodyta galūne, gražina TRUE jei taip. */ function endsWith($haystack, $needle) { return $needle === "" || substr($haystack, -strlen($needle)) === $needle; } /* Aprašymas: Funkcija priima vardą arba pavardę (turi būti vienas) ir gražina pakeistą į kilmininko linksnį (ko?). Pavyzdžiai: Drasius Kedys -> Drasiaus Kedžio Dalia Grybauskaitė -> Dalios Grybauskaitės Andrius Kubilius -> Andriaus Kubiliaus Loreta Graužinienė -> Loretos Graužinienės Natalija Bunkė -> Natalijos Bunkės */ function pakeistiVardaKilmininku($str) { $rtn = $str; $galunes = array(array("as", "o"), array("a", "os"), array("ė", "ės"), array("e", "es"), array("tis", "čio"), array("dis", "džio"), array("dys", "džio"), array("is", "io"), array("ys", "io"), array("us", "aus")); for ($i = 0; $i < count($galunes); $i++) { if (endsWith($str, $galunes[$i][0])) { $rtn = substr($str, 0, strlen($str)-strlen($galunes[$i][0])).$galunes[$i][1]; break; } } return $rtn; } echo pakeistiVardaKilmininku('Drasius'); echo pakeistiVardaKilmininku(' Kedys'); echo '<br />'; echo pakeistiVardaKilmininku('Dalia'); echo pakeistiVardaKilmininku(' Grybauskaitė'); echo '<br />'; echo pakeistiVardaKilmininku('Andrius'); echo pakeistiVardaKilmininku(' Kubilius'); echo '<br />'; echo pakeistiVardaKilmininku('Loreta'); echo pakeistiVardaKilmininku(' Graužinienė'); echo '<br />'; echo pakeistiVardaKilmininku('Natalija'); echo pakeistiVardaKilmininku(' Bunkė'); echo '<br />'; ?>
Kodas įnagininko linksniui (kuo?):
<?php /* Autorius: Kulverstukas Data: 2014.04.15 Svetainė: http://9v.lt ; Evilzone.org ; Programisiai.lt */ /* Aprašymas: Funkcija tikrina ar žodis baigiasi su nurodyta galūne, gražina TRUE jei taip. */ function endsWith($haystack, $needle) { return $needle === "" || substr($haystack, -strlen($needle)) === $needle; } /* Aprašymas: Funkcija priima vardą arba pavardę (turi būti vienas) ir gražina pakeistą į įnagininko linksnį (kuo?). Pavyzdžiai: Drasius Kedys -> Drasium Kedžiu Dalia Grybauskaitė -> Dalia Grybauskaite Andrius Kubilius -> Andrium Kubilium Loreta Graužinienė -> Loreta Graužiniene Natalija Bunkė -> Natalija Bunke */ function pakeistiVardaInagininku($str) { $rtn = $str; $galunes = array(array("as", "u"), array("ė", "e"), array("kis", "kiu"), array("tis", "čiu"), array("dis", "džiu"), array("dys", "džiu"), array("ius", "ium"), array("ys", "iu")); for ($i = 0; $i < count($galunes); $i++) { if (endsWith($str, $galunes[$i][0])) { $rtn = substr($str, 0, strlen($str)-strlen($galunes[$i][0])).$galunes[$i][1]; break; } } return $rtn; } echo pakeistiVardaInagininku('Drasius'); echo pakeistiVardaInagininku(' Kedys'); echo '<br />'; echo pakeistiVardaInagininku('Dalia'); echo pakeistiVardaInagininku(' Grybauskaitė'); echo '<br />'; echo pakeistiVardaInagininku('Andrius'); echo pakeistiVardaInagininku(' Kubilius'); echo '<br />'; echo pakeistiVardaInagininku('Loreta'); echo pakeistiVardaInagininku(' Graužinienė'); echo '<br />'; echo pakeistiVardaInagininku('Natalija'); echo pakeistiVardaInagininku(' Bunkė'); echo '<br />'; ?>