Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [gotowa funkcja] Liczba słownie
BzikOS
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


Zainspirowany jednym z tematów na forum spróbowałem napisać własną funkcję do zamiany liczby na jej słowną reprezentację. Oto do czego doszedłem:

  1. <?php
  2. function d2w( $digits )
  3. {
  4. $jednosci = Array( 'zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć' );
  5. $dziesiatki = Array( '', 'dziesięć', 'dwadzieścia', 'trzydzieści', 'czterdzieści', 'piećdziesiąt', 'sześćdziesiąt', 'siedemdziesiąt', 'osiemdziesiąt', 'dziewiećdziesiąt' );
  6. $setki = Array( '', 'sto', 'dwieście', 'trzysta', 'czterysta', 'piećset', 'sześćset', 'siedemset', 'osiemset', 'dziewiećset' );
  7. $nastki = Array( 'dziesieć', 'jedenaście', 'dwanaście', 'trzynaście', 'czternaście', 'piętnaście', 'szesnaście', 'siedemnaście', 'osiemnaście', 'dzięwietnaście' );
  8. $tysiace = Array( 'tysiąc', 'tysiące', 'tysięcy' );
  9.  
  10. $digits = (string) $digits;
  11. $digits = strrev( $digits );
  12. $i = strlen( $digits );
  13.  
  14. $string = '';
  15.  
  16. if( $i > 5 && $digits[5] > 0 )
  17. $string .= $setki[ $digits[5] ] . ' ';
  18. if( $i > 4 && $digits[4] > 1 )
  19. $string .= $dziesiatki[ $digits[4] ] . ' ';
  20. elseif( $i > 3 && $digits[4] == 1 )
  21. $string .= $nastki[$digits[3]] . ' ';
  22. if( $i > 3 && $digits[3] > 0 && $digits[4] != 1 )
  23. $string .= $jednosci[ $digits[3] ] . ' ';
  24.  
  25. $tmpStr = substr( strrev( $digits ), 0, -);
  26. if( strlen( $tmpStr ) > 0 )
  27. {
  28. $tmpInt = (int) $tmpStr;
  29. if( $tmpInt == 1 )
  30. $string .= $tysiace[0] . ' ';
  31. elseif( ( $tmpInt % 10 > 1 && $tmpInt % 10 < 5 ) && ( $tmpInt < 10 || $tmpInt > 20 ) )
  32. $string .= $tysiace[1] . ' ';
  33. else
  34. $string .= $tysiace[2] . ' ';
  35. }
  36.  
  37. if( $i > 2 && $digits[2] > 0 )
  38. $string .= $setki[$digits[2]] . ' ';
  39. if( $i > 1 && $digits[1] > 1 )
  40. $string .= $dziesiatki[$digits[1]] . ' ';
  41. elseif( $i > 0 && $digits[1] == 1 )
  42. $string .= $nastki[$digits[0]] . ' ';
  43. if( $digits[0] > 0 && $digits[1] != 1 )
  44. $string .= $jednosci[$digits[0]] . ' ';
  45.  
  46. return $string;
  47. }
  48. ?>


Ponieważ pisałem ją naprędce w pracy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) może zawierać błędy, jeżeli takowe ktos znajdzie, bardzo proszę o info w tym wątku.

Aha funkcja działa dla przedziału liczbowego od 1 - 999999.
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: 22.08.2025 - 15:16