Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Zamiana imion z mianownika na wołacz., np. Piotr > Piotrze, Wiesław > Wiesławie
Celudor
post
Post #21





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 4.09.2008

Ostrzeżenie: (0%)
-----


Poprawiona funkcja pod UTF-8

  1. <?php
  2. function wolacz($imie)
  3. {
  4. if (substr ($imie, -2, 2) == 'ia'
  5. || substr ($imie, -2, 2) == 'la')
  6. {
  7. return $imie = substr ($imie, 0, -1).'u';
  8. }
  9. else if (substr ($imie, -1, 1) == 'a')
  10. {
  11. return $imie = substr ($imie, 0, -1).'o';
  12. }
  13. else if (substr ($imie, -2, 2) == 'eł')
  14. {
  15. return substr ($imie, 0, -2).'le';
  16. }
  17. else if (substr ($imie, -2, 2) == 'oł')
  18. {
  19. return substr ($imie, 0, -2).'ele';
  20. }
  21. else if (substr ($imie, -3, 3) == 'eń')
  22. {
  23. return substr ($imie, 0, -2).'niu';
  24. }
  25. else if (substr ($imie, -1, 1) == 'r')
  26.  {
  27.  if(substr($imie, -2, 1) == 'e')
  28.  {
  29. return substr($imie, 0, -2).'rze';
  30.  }
  31.  else
  32.  {
  33.  return $imie.'ze';
  34.  }
  35.  }
  36. else if (substr ($imie, -3, 2) == 'ie' 
  37. && !(substr ($imie, -3, 1) == 'c'
  38. || substr ($imie, -3, 1) == 'h'
  39. || substr ($imie, -3, 1) == 'i'
  40. || substr ($imie, -3, 1) == 'j'
  41. || substr ($imie, -3, 1) == 'l'
  42. || substr ($imie, -3, 1) == 'm'
  43. || substr ($imie, -3, 1) == 'n'
  44. || substr ($imie, -3, 1) == 'o'
  45. || substr ($imie, -3, 1) == 'r'
  46. || substr ($imie, -3, 1) == 'u'
  47. || substr ($imie, -3, 1) == 'y'))
  48.  {
  49. return substr ($imie, 0, -3).substr ($imie, -1, 1).'u';
  50.  }
  51.  else if (substr ($imie, -2, 1) == 'e'
  52.  && !(substr ($imie, -3, 1) == 'c' 
  53.  || substr ($imie, -3, 1) == 'h'
  54.  || substr ($imie, -3, 1) == 'i'
  55.  || substr ($imie, -3, 1) == 'j'
  56.  || substr ($imie, -3, 1) == 'l'
  57.  || substr ($imie, -3, 1) == 'm'
  58.  || substr ($imie, -3, 1) == 'n'
  59.  || substr ($imie, -3, 1) == 'o'
  60.  || substr ($imie, -3, 1) == 'r'
  61.  || substr ($imie, -3, 1) == 'u'
  62.  || substr ($imie, -3, 1) == 'y'))
  63.  {
  64. return substr ($imie, 0, -2).substr ($imie, -1,1).'u';
  65.  }
  66.  else if (substr ($imie, -3, 3) == 'ies')
  67.  {
  68.  return substr ($imie, 0, -3).'sie';
  69.  }
  70.  else if (substr ($imie, -1, 1) == 'd')
  71.  {
  72. return $imie.'zie';
  73.  }
  74.  else if (substr ($imie, -1, 1) == 'k'
  75.  || substr ($imie, -1, 1) == 'l'
  76.  || substr ($imie, -1, 1) == 'g'
  77.  || substr ($imie, -1, 1) == 'h'
  78.  || substr ($imie, -1, 1) == 'j'
  79.  || substr ($imie, -1, 1) == 'l'
  80.  || substr ($imie, -2, 2) == 'rz'
  81.  || substr ($imie, -2, 2) =='sz'
  82.  || substr ($imie, -1, 1) == 'c')
  83.  {
  84.  return $imie.'u';
  85.  }
  86.  else if (substr ($imie, -1, 1) == 't')
  87.  {
  88. return substr($imie, 0, -1).'cie';
  89.  }
  90.  else if (substr ($imie, -1, 1) == 'm'
  91.  || substr ($imie, -1, 1) == 'n'
  92.  || substr ($imie, -1, 1) == 'b'
  93.  || substr ($imie, -1, 1) == 'f'
  94.  || substr ($imie, -1, 1) == 'p'
  95.  || substr ($imie, -1, 1) == 's'
  96.  || substr ($imie, -1, 1) == 'z'
  97.  || substr ($imie, -1, 1) == 'w')
  98.  {
  99. return $imie.'ie';
  100.  }
  101.  else if (substr ($imie, -3, 3) == 'ów')
  102.  {
  103. return substr ($imie, 0, -2).'owie';
  104.  }
  105.  else if (substr ($imie, -3, 3) == 'ał')
  106.  {
  107. return substr ($imie, 0, -2).'le';
  108.  }
  109.  else if (substr ($imie, -2, 2) == 'ś')
  110.  {
  111. return substr ($imie, 0, -2).'siu';
  112.  }
  113.  else
  114.  { 
  115. return $imie;
  116.  }
  117. }
  118. ?>


Poprawiona funkcja pod UTF-8
  1. <?php
  2. function wolacz($imie)
  3. {
  4. if (substr ($imie, -2, 2) == 'ia' || substr ($imie, -2, 2) == 'la')
  5. return $imie = substr ($imie, 0, -1).'u';
  6. else if (substr ($imie, -1, 1) == 'a')
  7. return $imie = substr ($imie, 0, -1).'o';
  8. else if (substr ($imie, -2, 2) == 'eł')
  9. return substr ($imie, 0, -2).'le';
  10. else if (substr ($imie, -2, 2) == 'oł')
  11. return substr ($imie, 0, -2).'ele';
  12. else if (substr ($imie, -3, 3) == 'eń')
  13. return substr ($imie, 0, -2).'niu';
  14. else if (substr ($imie, -1, 1) == 'r')
  15. if(substr($imie, -2, 1) == 'e')
  16. return substr($imie, 0, -2).'rze';
  17. else
  18. return $imie.'ze';
  19. else if (substr ($imie, -3, 2) == 'ie' && !(substr ($imie, -3, 1) == 'c' || substr ($imie, -3, 1) == 'h' || substr ($imie, -3, 1) == 'i'
  20. || substr ($imie, -3, 1) == 'j' || substr ($imie, -3, 1) == 'l' || substr ($imie, -3, 1) == 'm' || substr ($imie, -3, 1) == 'n' || substr ($imie, -3, 1) == 'o'
  21. || substr ($imie, -3, 1) == 'r' || substr ($imie, -3, 1) == 'u' || substr ($imie, -3, 1) == 'y'))
  22. return substr ($imie, 0, -3).substr ($imie, -1, 1).'u';
  23. else if (substr ($imie, -2, 1) == 'e' && !(substr ($imie, -3, 1) == 'c' || substr ($imie, -3, 1) == 'h' || substr ($imie, -3, 1) == 'i'
  24. || substr ($imie, -3, 1) == 'j' || substr ($imie, -3, 1) == 'l' || substr ($imie, -3, 1) == 'm' || substr ($imie, -3, 1) == 'n'
  25. || substr ($imie, -3, 1) == 'o' || substr ($imie, -3, 1) == 'r' || substr ($imie, -3, 1) == 'u' || substr ($imie, -3, 1) == 'y'))
  26. return substr ($imie, 0, -2).substr ($imie, -1,1).'u';
  27. else if (substr ($imie, -3, 3) == 'ies')
  28. return substr ($imie, 0, -3).'sie';
  29. else if (substr ($imie, -1, 1) == 'd')
  30. return $imie.'zie';
  31. else if (substr ($imie, -1, 1) == 'k' || substr ($imie, -1, 1) == 'l' || substr ($imie, -1, 1) == 'g' || substr ($imie, -1, 1) == 'h'
  32. || substr ($imie, -1, 1) == 'j' || substr ($imie, -1, 1) == 'l' || substr ($imie, -2, 2) == 'rz' || substr ($imie, -2, 2) =='sz' || substr ($imie, -1, 1) == 'c')
  33. return $imie.'u';
  34. else if (substr ($imie, -1, 1) == 't')
  35. return substr($imie, 0, -1).'cie';
  36. else if (substr ($imie, -1, 1) == 'm' || substr ($imie, -1, 1) == 'n' || substr ($imie, -1, 1) == 'b' || substr ($imie, -1, 1) == 'f'
  37. || substr ($imie, -1, 1) == 'p' || substr ($imie, -1, 1) == 's' || substr ($imie, -1, 1) == 'z' || substr ($imie, -1, 1) == 'w')
  38. return $imie.'ie';
  39. else if (substr ($imie, -3, 3) == 'ów')
  40. return substr ($imie, 0, -2).'owie';
  41. else if (substr ($imie, -3, 3) == 'ał')
  42. return substr ($imie, 0, -2).'le';
  43. else if (substr ($imie, -2, 2) == 'ś')
  44. return substr ($imie, 0, -2).'siu';
  45. else
  46. return $imie;
  47. }
  48. ?>


Ten post edytował Celudor 4.09.2008, 15:32:37
Go to the top of the page
+Quote Post
wjtk
post
Post #22





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 4.02.2011

Ostrzeżenie: (0%)
-----


Wybaczcie, za odkopanie trupa, ale temat uważam za ciekawy i aktualny (IMG:style_emoticons/default/wink.gif) . Skrypt działa bardzo dobrze, dla większości imion, ale znalazłem błąd:
Grzesiek -> Grzesieku
Paweł -> Paweł

Macie pomysł jak to poprawić?

Ten post edytował wjtk 4.02.2011, 15:26:10
Go to the top of the page
+Quote Post
cipronex
post
Post #23





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.02.2011

Ostrzeżenie: (0%)
-----


Cytat(wjtk @ 4.02.2011, 15:25:11 ) *
Wybaczcie, za odkopanie trupa, ale temat uważam za ciekawy i aktualny (IMG:style_emoticons/default/wink.gif) . Skrypt działa bardzo dobrze, dla większości imion, ale znalazłem błąd:
Grzesiek -> Grzesieku
Paweł -> Paweł

Macie pomysł jak to poprawić?


Mnie w ogóle dziwi sposób zabierania się do tego. To jest oczywiste, że nie da się wszystkiego przewidzieć, chociażby dlatego, że w przypadku niektórych imion mamy do czynienia z jerami, które w przypadku polskiego przyjął formę "e" ruchomego. Nie da się stworzyć reguły, zwłaszcza biorąc pod uwagę oboczności. Ja to widzę w jeden sposób. Tworzymy tabelę, w której będą imiona w mianowniku i przypisane do nich imiona w wołaczu.

Zastanawia mnie też, w jakim celu autor wątku chce taką operację przeprowadzić?
Go to the top of the page
+Quote Post
roobik
post
Post #24





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(cipronex @ 4.02.2011, 15:41:30 ) *
Wybaczcie, za odkopanie trupa(...)

Ja również, ale jest tego "przyczyna". Mowa tu jest tylko o imionach polskich, a nierzadko zdarzają się imiona z innego języka (głównie z angielskiego). Przykłady? Proszę:
Nelly (skoro był p. Jan (IMG:style_emoticons/default/wink.gif) ), Agnes, Zamhri, czy Akiv (litewskie imię zarówno żeńskie, jak i męskie)... Przykładów można mnożyć i moim zdaniem (jeśli nie mam racji - proszę o poprawienie mnie), dokładając w skrypcie poszczególne wyjątki, dojdziemy do tego, że będą się one wzajemnie wykluczać...
Go to the top of the page
+Quote Post
Zyx
post
Post #25





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Od tego są słowniki fleksyjne języka polskiego. Są tam wymienione wszystkie formy gramatyczne danego wyrazu.
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.01.2026 - 18:31