Конференции:  3D графика Delphi Игры Бизнес Потрепаться PHP&MySQL QuarkXPress Turbo Pascal WEB-дизайн 
<<<    Конференция "PHP&MySQL"   >>>
Майор [2010-04-12 21:20:22]
Есть ли у кого функция перевода цифр в слова?
Нужна сумма прописью. На ПХП. На укр. языке.
Чтобы вместо 210.95 писало Двісті десять грн 95 коп.

PAYN [2010-11-24 02:13:53]    [1]
Да есть.
Лови:
function Suma($inn, $stripkop=false) {
$nol = 'нуль';
$str[100]= array('','сто','двісті','триста','чотириста','п\'ятсот','шістсот', 'сімсот', 'вісімсот','дев\'ятсот');
$str[11] = array('','десять','одинадцять','дванадцять','тринадцять', 'чотирнадцать','п\'ятнадцать','шістнадцять','сімнадцять', 'вісімнадцять','дев\'ятнадцять','двадцять');
$str[10] = array('','десять','двадцять','тридцять','сорок','п\'ятдесят', 'шістдесят','сімдесят','вісімдесят','дев\'яносто');
$sex = array(
array('','один','два','три','чотири','п\'ять','шість','сім', 'вісімь','дев\'ять'),// m
array('','одна','дві','три','чотири','п\'ять','шість','сім', 'вісем','дев\'ять') // f
);
$forms = array(
array('копійка',  'копійки',   'копійок',     1), // 10^-2
array('гривня',    'гривні',     'гривень',     0), // 10^ 0
array('тисяча',   'тисячі',    'тисяч',      1), // 10^ 3
array('мільйон',  'мільйона',  'мільйонів',  0), // 10^ 6
array('мільяард', 'мільярда', 'мільардів', 0), // 10^ 9
array('трильйон', 'трильйона', 'трильйонів', 0), // 10^12
);
$out = $tmp = array();
$tmp = explode('.', str_replace(',','.', $inn));
$rub = number_format($tmp[0],0,'','-');
if ($rub==0) $out[] = $nol;
// нормализация копеек
$kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', я),0,2) : '00';
$segments = explode('-', $rub);
$offset = sizeof($segments);
if ((int)$rub==0) {
$o[] = $nol;
$o[] = morph(0, $forms[1][0],$forms[1][1],$forms[1][2]);
}
else {
foreach ($segments as $k=>$lev) {
$sexi= (int) $forms[$offset][3];
$ri  = (int) $lev;
if ($ri==0 && $offset>1) {
$offset--;
continue;
}
$ri = str_pad($ri, 3, '0', STR_PAD_LEFT);
$r1 = (int)substr($ri,0,1);
$r2 = (int)substr($ri,1,1);
$r3 = (int)substr($ri,2,1);
$r22= (int)$r2.$r3;
if ($ri>99) $o[] = $str[100][$r1];
if ($r22>20) {// >20
$o[] = $str[10][$r2];
$o[] = $sex[ $sexi ][$r3];
}
else { // <=20
if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20
elseif($r22>0)  $o[] = $sex[ $sexi ][$r3]; // 1-9
}
$o[] = morph($ri, $forms[$offset][0],$forms[$offset][1],$forms[$offset][2]);
$offset--;
}
}
if (!$stripkop) {
$o[] = $kop;
$o[] = morph($kop,$forms[0][0],$forms[0][1],$forms[0][2]);
}
return preg_replace("/\s{2,}/",' ',implode(' ',$o));
}

function morph($n, $f1, $f2, $f5) {
$n = abs($n) % 100;
$n1= $n % 10;
if ($n>10 && $n<20) return $f5;
if ($n1>1 && $n1<5) return $f2;
if ($n1==1) return $f1;
return $f5;
}

ксю [2011-05-27 00:54:28]    [2]
куда это вставлять???

PAYN [2011-05-27 07:19:14]    [3]
В пхп. я улыбаюсь
работает в виде Suma(123456);

Java Doctor [2012-04-16 18:58:42]    [4]
Не Suma(123456);
а
echo Suma(123456); привет


ПОДПИСАТЬСЯ НА ТЕМУ

E-mail
7+8?



приветя улыбаюсьхадаподмигиваюя тащусьмое почтениесчастливоцелуюбухаемужас
не понялплачуфупечальзлойстесняюсьсогласеннетгыкурю
суперязыкмузонпыворыдаю


Ваше имя: 
     Осталось: 

 

Допускается форматирование текста:
[•B]полужирный[B•] [•I]наклонный[I•] [•U]подчеркнутый[U•] [•‹]URL картинки[›•].
Для кода программ используйте [•¤] код программы [¤•]
Количество открывающих и закрывающих тэгов форматирования текста должно быть равным, иначе форматирование не осуществится.


Adelavida Link       Рейтинг@Mail.ru