Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kwota zapisana liczbą na zapis słowny, Funkcja, PHP 4 i 5
soldat
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 14.03.2005
Skąd: W-wa

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


Witam wszystkich.

Napisałem poniższą funkcję do podawania kwoty słownie podczas drukowania przelewów. Działa ona w zakresie 1-999999 (to i tak już o wiele za dużo jak na moje potrzeby), ale bez problemu można ja przerobić tak żeby działała na większych liczbach ( bądź ujemnych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )


  1. <?
  2.  
  3. $jedn=array(1=>&#092;"jeden\",\"dwa\",\"trzy\",\"cztery\",\"pięć\",\"sześć\",\"siedem\",\"osiem\",\"dziewięć\",\"dziesięć\",\"jedenaście\",\"dwanaście\",
  4. &#092;"trzynaście\",\"czternaście\",\"piętnaście\",\"szesnaście\",\"siedemnaście\",\"osiemnaście\",\"dziewiętnaście\");
  5.  
  6. $dzies=array(2=>&#092;"dwadzieścia\",\"trzydzieści\",\"czterdzieści\",\"pięćdziesiąt\",\"sześćdziesiąt\",\"siedemdziesiąt\",\"osiemdziesiąt\",\"dziewięćdziesiąt\");
  7.  
  8. $setki=array(1=>&#092;"sto\",\"dwieście\",\"trzysta\",\"czterysta\",\"pięćset\",\"sześćset\",\"siedemset\",\"osiemset\",\"dziewięćset\");
  9.  
  10.  
  11. function kwota_slownie($kwota) {
  12.  
  13. global $jedn,$dzies,$setki;  
  14.  
  15. // usuniecie zbednych zer z poczatku ciagu (zeby np. \"009\" bylo zamieniane na \"dziewiec\")
  16. while ($kwota[0]==&#092;"0\") { $kwota=substr($kwota,1,strlen($kwota)); }
  17.  
  18. $str_dl=strlen($kwota);
  19.  
  20. if ($kwota<20) { $slownie=$jedn[$kwota]; }
  21.  
  22. elseif ($kwota<100) { 
  23.  
  24. $j=$kwota[1];  $d=$kwota[0];
  25. $slownie=$dzies[$d].&#092;" \".$jedn[$j];
  26.  
  27. }
  28.  
  29. elseif ($kwota<1000) { 
  30.  
  31. $s=$kwota[0];
  32. $d=substr($kwota,1,$str_dl);
  33. $slownie=$setki[$s].&#092;" \".kwota_slownie($d); 
  34.  
  35. }
  36.  
  37. elseif ($kwota<1000000) {  
  38.  
  39. $d=substr($kwota,-3);
  40. if ($kwota<2000) { $t=&#092;"tysiąc\"; }
  41. elseif ($kwota<5000) { 
  42.  
  43. $jt=$kwota[0];
  44. $t=$jedn[$jt].&#092;" tysiące\";
  45.  
  46. }
  47.  
  48. else { 
  49.  
  50. $jt=substr($kwota,0,$str_dl-3);
  51. $t=kwota_slownie($jt).&#092;" tysięcy\";
  52.  
  53. }
  54.  
  55. $slownie=$t.&#092;" \".kwota_slownie($d);
  56.  
  57. }  
  58.  
  59. // to juz ponad milion - mozna zrobic tak samo jak dla tysiecy
  60. // mi nie było to już potrzebne :)
  61. else { $slownie=$kwota; }
  62.  
  63.  
  64. return($slownie);
  65.  
  66. }
  67.  
  68. ?>


EDIT :

Użycie :

  1. <?
  2.  
  3.  // $suma - zmienna integer 
  4.  // $zlotych_slownie - string
  5.  
  6.  $zlotych_slownie=kwota_slownie($suma);
  7.  
  8. ?>


Ten post edytował soldat 15.03.2005, 11:01:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Polecam skorzystanie z PEAR
http://pear.php.net/package/Numbers_Words
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.02.2026 - 12:46