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:
<?php
function d2w( $digits )
{
$jednosci = Array( 'zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć' ); $dziesiatki = Array( '', 'dziesięć', 'dwadzieścia', 'trzydzieści', 'czterdzieści', 'piećdziesiąt', 'sześćdziesiąt', 'siedemdziesiąt', 'osiemdziesiąt', 'dziewiećdziesiąt' ); $setki = Array( '', 'sto', 'dwieście', 'trzysta', 'czterysta', 'piećset', 'sześćset', 'siedemset', 'osiemset', 'dziewiećset' ); $nastki = Array( 'dziesieć', 'jedenaście', 'dwanaście', 'trzynaście', 'czternaście', 'piętnaście', 'szesnaście', 'siedemnaście', 'osiemnaście', 'dzięwietnaście' ); $tysiace = Array( 'tysiąc', 'tysiące', 'tysięcy' );
$digits = (string) $digits;
$string = '';
if( $i > 5 && $digits[5] > 0 )
$string .= $setki[ $digits[5] ] . ' ';
if( $i > 4 && $digits[4] > 1 )
$string .= $dziesiatki[ $digits[4] ] . ' ';
elseif( $i > 3 && $digits[4] == 1 )
$string .= $nastki[$digits[3]] . ' ';
if( $i > 3 && $digits[3] > 0 && $digits[4] != 1 )
$string .= $jednosci[ $digits[3] ] . ' ';
{
$tmpInt = (int) $tmpStr;
if( $tmpInt == 1 )
$string .= $tysiace[0] . ' ';
elseif( ( $tmpInt % 10 > 1 && $tmpInt % 10 < 5 ) && ( $tmpInt < 10 || $tmpInt > 20 ) )
$string .= $tysiace[1] . ' ';
else
$string .= $tysiace[2] . ' ';
}
if( $i > 2 && $digits[2] > 0 )
$string .= $setki[$digits[2]] . ' ';
if( $i > 1 && $digits[1] > 1 )
$string .= $dziesiatki[$digits[1]] . ' ';
elseif( $i > 0 && $digits[1] == 1 )
$string .= $nastki[$digits[0]] . ' ';
if( $digits[0] > 0 && $digits[1] != 1 )
$string .= $jednosci[$digits[0]] . ' ';
return $string;
}
?>
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.