Skrypt tworzący wołacz imienia
Skrypt tworzy wołacz imienia i tworzy zwrot grzecznościowy na podstawie imienia w mianowniku (wersja testowa)
Do utworzenia odpowiedniej odmiany wykorzystywany jest zestaw regułek sprawdzających zakończenie mianownika. Na tej podstawie rozpoznawana jest płeć osoby noszącej dane imię, a także tworzony odpowiedni wołacz imienia.
Fragment kodu:
case substr($imie,-2,2)=="eł":
return "1".substr($imie,0,-2)."le";
case substr($imie,-2,2)=="tr":
return "1".$imie."ze";
zwracana wartość, to 1 – rodzaj męski, a następnie imię zmienione w wołacz.
Działający skrypt: Wołacz imienia
Copyright (c) 2007 Cypriano (www.cypriano.pl)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
.
function wolacz ($imie) {
switch($imie)
{
case substr($imie,-2,2)=="ni":
return "1".$imie;
case substr($imie,-2,2)=="eł":
return "1".substr($imie,0,-2)."le";
case substr($imie,-2,2)=="tr":
return "1".$imie."ze";
case substr($imie,-2,2)=="ał":
return "1".substr($imie,0,-1)."le";
case in_array(substr($imie,-2,2),array("it","rt")):
return "1".substr($imie,0,-1)."cie";
case substr($imie,-4,4)=="ciek":
return "1".substr($imie,0,-4)."ćku";
case substr($imie,-4,4)=="siek":
return "1".substr($imie,0,-4)."śku";
case substr($imie,-3,3)=="per":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-2,2)=="ek":
return "1".substr($imie,0,-2)."ku";
case substr($imie,-2,2)=="st":
return "1".substr($imie,0,-2)."ście";
case in_array(substr($imie,-3,3),array("cja","ria","lia","dia","wia","fia")) || in_array(substr($imie,-4,4),array("iela","bela","zula")):
return "2".substr($imie,0,-1)."o";
case in_array(substr($imie,-2,2),array("ja","ia","la")) :
return "2".substr($imie,0,-1)."u";
case substr($imie,-2,2)=="ba":
return "1".substr($imie,0,-1)."o";
case in_array(substr($imie,-1,1),array("n","f","m","w","p","s","b")):
return "1".$imie."ie";
case in_array(substr($imie,-1,1),array("g","h","j","k","l","z")):
return "1".$imie."u";
case substr($imie,-3,3)=="der":
return "1".substr($imie,0,-2)."rze";
case substr($imie,-1,1)=="r":
return "1".$imie."ze";
case substr($imie,-1,1)=="d":
return "1".$imie."zie";
case substr($imie,-1,1)=="a":
return "2".substr($imie,0,-1)."o";
case substr($imie,-1,1)=="y":
return "1".$imie;
default:
return "0".$imie;
}
}
function zamien($imie)
{
return "".(substr(wolacz(strtolower($imie)),0,1)=="1")? "Panie ".ucfirst(substr(wolacz(strtolower($imie)),1)):( (substr(wolacz(strtolower($imie)),0,1)=="2")? "Pani ".ucfirst(substr(wolacz(strtolower($imie)),1)):" ".ucfirst(substr(wolacz(strtolower($imie)),1)));
}
Popularity: 27% [?]
fajny skrypcik, jak dużą masz bazę wyjątków?
np. Kuba
komentarz by Valor — 22 kwietnia, 2008 @ 14:54
funkcja jest na 14 case’ach.
W sumie jest to ok 45 linii i ok. 1600 znaków (licząc białe znaki) kodu.
Jeżeli chodzi np o imię Kuba, to załatwiłem to sprawdzaniem najpierw najdłuższych trafień, np.
case in_array(substr($imie,-3,3),array("cja","ria","lia","dia","wia","fia"))i kilka innych, a Kuba załapuje się na sprawdzenie tylko ostatniej litery „a”. Także w sumie trochę tych porównań jest – 4 case’y (z 14) używają in_array.
komentarz by Cypriano — 22 kwietnia, 2008 @ 15:49
http://www.cypriano.pl/odmianaimion.php?imie=aleksander
wymaga jeszcze dopracowania. pewnie nie da się zrobić tego uniwersalnie
komentarz by Rafał — 6 listopada, 2008 @ 13:14
Faktycznie nie działało dla Aleksandra.
Na szybko dorobiłem jedną regułkę dla końcówek „der”…
dzięki
komentarz by Cypriano — 6 listopada, 2008 @ 14:34
imo nie ma sznas zeby w jednym kb to ladnie dzialalo – i zreszta nie dziala – zle rozpoznaje plec imion Barnaba, Kuba, trzeba to rozgalezic, taka plaska struktura sobie nie poradzi.
– porozdrzewieniu dziala wg regul polskiej gramatyki a nie bazy imion i wyjatkow (czyli odmieni prawidłowo też rzeczowniki np gruszka pędzel itd)
w okolicach 2006 zrobilem cos podobnego na 6kb (wdrazam do newsletterów) tzn podobnego pod wzgledem zasady, nie skutecznosci
http://smutec.pl/imiona/
komentarz by bujnos — 12 lutego, 2009 @ 14:10
Faktycznie nie działa tak jak powinno.
Żeby nie było, to dodałem jednego case’a
Ten skrypt robiłem dosyć dawno i dla dosyć ograniczonej liczby imion, więc pewnie nigdy nie będzie działał dla wszystkich. Jednak to że nie działał dla Kuby, to musiało gdzieś umknąć
Teraz gdybym to robił, to być może poszedłbym w strukturę drzewiastą, ale to się raczej nie zdarzy – mam inne rzeczy na głowie
komentarz by Cypriano — 12 lutego, 2009 @ 16:08
[...] post: Cypriano " Skrypt tworzący wołacz imienia Share and [...]
Pingback by Cypriano " Skrypt tworzący wołacz imienia — 25 maja, 2009 @ 3:59