/ Published in: PHP
URL: http://vladimir-ivanov.net
This function accept one parameter (integer or float) and returns the same number writed with words. Useful for currencies and invoices.
Expand |
Embed | Plain Text
function slovom($num, $tri = 0) { 0 => "", 0 => " един", 1 => "", 2 => " eдин", 3 => " eдин", 4 => " eдин", 5 => " eдин", 6 => " eдин", 7 => " eдин", 8 => " eдин", 9 => " eдин", 10 => " eдин", ), 0 => " два", 1 => " двe", 2 => " два", 3 => " два", 4 => " два", 5 => " два", 6 => " два", 7 => " два", 8 => " два", 9 => " два", 10 => " два", ), 3 => " три", 4 => " четири", 5 => " пет", 6 => " шест", 7 => " седем", 8 => " осем", 9 => " девет", 10 => " десет", 11 => " единадесет", 12 => " дванадесет", 13 => " тринадесет", 14 => " четиринадесет", 15 => " петнадесет", 16 => " шестнадесет", 17 => " седемнадесет", 18 => " осемнадесет", 19 => " деветнадесет" ); 0 => "", 1 => "", 2 => " двадесет", 3 => " тридесет", 4 => " четиридесет", 5 => " петдесет", 6 => " шестдесет", 7 => " седемдесет", 8 => " осемдесет", 9 => " деведесет" ); 0 => "", 1 => " сто", 2 => " двеста", 3 => " триста", 4 => " четиристотин", 5 => " петстотин", 6 => " шестстотин", 7 => " седемстотин", 8 => " осемстотин", 9 => " деветстотин", ); 0 => "", 0 => " хиляда", 1 => " хиляди"), 0 => " милион", 1 => " милиона"), 0 => " билион", 1 => " билионa"), 0 => " трилион", 1 => " трилиона"), 0 => " квадрилион", 1 => " квадрилиона"), 0 => " квинтилион", 1 => " квинтилиони"), 0 => " сикстилион", 1 => " сикстилион"), 0 => " септилион", 1 => " септилиони"), 0 => " октилион", 1 => " октилион"), 0 => " нонилион", 1 => " нонилиои") ); //взимаме само цялата част от числото, без стойността //след десетичната запетая $num = $n[0]; $r = (int) ($num / 1000); $x = ($num / 100) % 10; $y = $num % 100; $str = ""; // стотици if ($x > 0) { $str = $stotici[$x]; } // единици и десетици if ($y < 20) { if($y == 0 && $r > 0) { $str = ' и '.$str; } $str .= ' '.$edinici[$y][$tri]; } else { $str .= ' '.$edinici[$y]; } } else { if($edinici[$y % 10]) { $str .= $desetici[(int) ($y / 10)]; $str .= ' и'; $str .= $edinici[$y % 10][$tri]; } else { $str .= $edinici[$y % 10]; } } else { $str .= ' и'.$desetici[(int) ($y / 10)]; } } // добавяне на модификатор - хиляди, милиони, билиони if ($str != "") { //Ако има зададени опции за единствено и мн. число //мн. число ли е? if($num > 1) { $str .= $tripleti[$tri][1]; } else { $str .= $tripleti[$tri][0]; } } else { $str .= $tripleti[$tri]; } } //ако сме на първата стъпка (т.е. определяме числото до стотици) if($tri == 0) { //добавяме префикс за лева $str .= ' лева'; //и ако има сетнати стотинки ги добавяме и тях $str .= ' и '.$n[1].'ст.'; } } // продължаване рекрусивно? if ($r > 0) { return slovom($r, $tri+1).$str; } else { return $str; } }
You need to login to post a comment.
