Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kwota słownie - gotowy skrypt, z prośbą o przetestowanie (obsługuje 1-10 do potęgi 45)
ROMeeO
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.06.2006

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


Napisałem sobie funkcyjkę do obsługi dowolnej kwoty. Ta akurat obsługuje aż do septyliardów, czyli 10 do potęgi 45, ale można ją rozwinąć dowolnie.
Jakby ktoś chciał potestować, to bardzo proszę.
Kwotę zwraca w formacie:
1234,56 - jeden tysiąc dwieście trzydzieści cztery złote 56/100 gr.
grosze oczywiście można jeszcze dorobić słownie, ale mi akurat w takim formacie było potrzebne.
  1. <?php
  2. function slownie ($kw) {
  3.  
  4. $t_a = array('','sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset');
  5. $t_b = array('','dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt','siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt');
  6. $t_c = array('','jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć');
  7. $t_d = array('dziesięć','jedenaście','dwanaście','trzynaście','czternaście','piętnaście','szesnaście','siednaście','osiemnaście','dziewiętnaście');
  8.  
  9. $t_kw_15 = array('septyliard','septyliardów','septyliardy');
  10. $t_kw_14 = array('septylion','septylionów','septyliony');
  11. $t_kw_13 = array('sekstyliard','sekstyliardów','sekstyliardy');
  12. $t_kw_12 = array('sekstylion','sekstylionów','sepstyliony');
  13. $t_kw_11 = array('kwintyliard','kwintyliardów','kwintyliardy');
  14. $t_kw_10 = array('kwintylion','kwintylionów','kwintyliony');
  15. $t_kw_9 = array('kwadryliard','kwadryliardów','kwaryliardy');
  16. $t_kw_8 = array('kwadrylion','kwadrylionów','kwadryliony');
  17. $t_kw_7 = array('tryliard','tryliardów','tryliardy');
  18. $t_kw_6 = array('trylion','trylionów','tryliony');
  19. $t_kw_5 = array('biliard','biliardów','biliardy');
  20. $t_kw_4 = array('bilion','bilionów','bilony');
  21. $t_kw_3 = array('miliard','miliardów','miliardy');
  22. $t_kw_2 = array('milion','milionów','miliony');
  23. $t_kw_1 = array('tysiąc','tysięcy','tysiące');
  24. $t_kw_0 = array('złoty','złotych','złote');
  25.  
  26. if ($kw!='') {
  27. $kw=(substr_count($kw,',')==0) ? $kw.',00':$kw;
  28. $tmp=explode(",",$kw);
  29. $ln=strlen($tmp[0]);
  30. $tmp_a=($ln%3==0) ? (floor($ln/3)*3):((floor($ln/3)+1)*3);
  31. for($i = $ln; $i < $tmp_a; $i++) {
  32. $l_pad .= '0';
  33. $kw_w = $l_pad . $tmp[0];
  34. }
  35. $kw_w=($kw_w=='') ? $tmp[0]:$kw_w;
  36. $paczki=(strlen($kw_w)/3)-1;
  37. $p_tmp=$paczki;
  38. for($i=0;$i<=$paczki;$i++) {
  39. $t_tmp='t_kw_'.$p_tmp;
  40. $p_tmp--;
  41. $p_kw=substr($kw_w,($i*3),3);
  42. $kw_w_s=($p_kw{1}!=1) ? $t_a[$p_kw{0}].' '.$t_b[$p_kw{1}].' '.$t_c[$p_kw{2}]:$t_a[$p_kw{0}].' '.$t_d[$p_kw{2}];
  43. if(($p_kw{0}==0)&&($p_kw{2}==1)&&($p_kw{1}<1)) $ka=${$t_tmp}[0]; //możliwe że $p_kw{1}!=1
  44. else if (($p_kw{2}>&& $p_kw{2}<5)&&$p_kw{1}!=1) $ka=${$t_tmp}[2];
  45. else $ka=${$t_tmp}[1];
  46. $kw_slow.=$kw_w_s.' '.$ka.' ';
  47. }
  48. }
  49. $text = $kw_slow.' '.$tmp[1].'/100 gr.';
  50. return $text;
  51. }
  52.  
  53. echo slownie('12345678910111213141516171819202122232425262728,56');
  54. ?>


Pozdrawiam

Ten post edytował ROMeeO 29.06.2006, 22:14:16
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: 23.12.2025 - 12:17