kiedys cos takiego znalazlem w necie, niestety nie pamietam autora i linku.
wywolujemy np:
echo slownie(189);
uzywalem tego do opisywania nr strony;)
<?php
'minus',
'zerowa',
'pierwsza',
'druga',
'trzecia',
'czwarta',
'piąta',
'szósta',
'siódma',
'ósma',
'dziewiąta'),
'dziesiąta',
'jedenasta',
'dwunasta',
'trzynasta',
'czternasta',
'piętnasta',
'szesnasta',
'siedemnasta',
'osiemnasta',
'dziewietnasta'),
'dziesiąta',
'dwudziesta',
'trzydziesta',
'czterdziesta',
'pięćdziesiąta',
'sześćdziesiąta',
'siedemdziesiąta',
'osiemdziesiąta',
'dziewięćdziesiąta'),
'sto',
'dwieście',
'trzysta',
'czterysta',
'pięćset',
'sześćset',
'siedemset',
'osiemset',
'dziewięćset'),
'tysiąc',
'tysiące',
'tysięcy'),
'milion',
'miliony',
'milionów'),
'miliard',
'miliardy',
'miliardów'),
);
function odmiana($odmiany, $int){ // $odmiany = Array('jeden','dwa','pięć')
$txt = $odmiany[2];
if ($int == 1) $txt = $odmiany[0];
$jednosci = (int
) substr($int,-1
); $reszta = $int % 100;
if (($jednosci > 1 && $jednosci < 5) &! ($reszta > 10 && $reszta < 20))
$txt = $odmiany[1];
return $txt;
}
function liczba($int){ // odmiana dla liczb < 1000
$wynik = '';
if ($j == 0) return $slowa[1][0];
$jednosci = $j % 10;
$dziesiatki = ($j % 100 - $jednosci) / 10;
$setki = ($j - $dziesiatki*10 - $jednosci) / 100;
if ($setki > 0) $wynik .= $slowa[4][$setki-1].' ';
if ($dziesiatki > 0)
if ($dziesiatki == 1) $wynik .= $slowa[2][$jednosci].' ';
else
$wynik .= $slowa[3][$dziesiatki-1].' ';
if ($jednosci > 0 && $dziesiatki != 1) $wynik .= $slowa[1][$jednosci].' ';
return $wynik;
}
function slownie($int){
$out = '';
if ($in{0} == '-'){
$out = $slowa[0].' ';
}
$txt = str_split
(strrev($in), 3
);
if ($in == 0) $out = $slowa[1][0].' ';
for ($i = count($txt) - 1; $i >= 0; $i--){ $liczba = (int
) strrev($txt[$i]); if ($liczba > 0)
if ($i == 0)
$out .= liczba($liczba).' ';
else
$out .= ($liczba > 1 ? liczba($liczba).' ' : '')
.odmiana( $slowa[4 + $i], $liczba).' ';
}
}
?>