Revision: 54344
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 20, 2011 21:18 by stz184
Initial Code
function slovom($num, $tri = 0) { $edinici = array( 0 => "", 1 => array( 0 => " един", 1 => "", 2 => " eдин", 3 => " eдин", 4 => " eдин", 5 => " eдин", 6 => " eдин", 7 => " eдин", 8 => " eдин", 9 => " eдин", 10 => " eдин", ), 2 => array( 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 => " деветнадеÑет" ); $desetici = array( 0 => "", 1 => "", 2 => " двадеÑет", 3 => " тридеÑет", 4 => " четиридеÑет", 5 => " петдеÑет", 6 => " шеÑтдеÑет", 7 => " ÑедемдеÑет", 8 => " оÑемдеÑет", 9 => " деведеÑет" ); $stotici = array ( 0 => "", 1 => " Ñто", 2 => " двеÑта", 3 => " триÑта", 4 => " четириÑтотин", 5 => " петÑтотин", 6 => " шеÑÑ‚Ñтотин", 7 => " ÑедемÑтотин", 8 => " оÑемÑтотин", 9 => " деветÑтотин", ); $tripleti = array( 0 => "", 1 => array( 0 => " хилÑда", 1 => " хилÑди"), 2 => array( 0 => " милион", 1 => " милиона"), 3 => array( 0 => " билион", 1 => " билионa"), 4 => array( 0 => " трилион", 1 => " трилиона"), 5 => array( 0 => " квадрилион", 1 => " квадрилиона"), 6 => array( 0 => " квинтилион", 1 => " квинтилиони"), 7 => array( 0 => " ÑикÑтилион", 1 => " ÑикÑтилион"), 8 => array( 0 => " Ñептилион", 1 => " Ñептилиони"), 9 => array( 0 => " октилион", 1 => " октилион"), 10 => array( 0 => " нонилион", 1 => " нонилиои") ); //взимаме Ñамо цÑлата чаÑÑ‚ от чиÑлото, без ÑтойноÑтта //Ñлед деÑетичната Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ $n = explode(".", $num); $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; } if(is_array($edinici[$y]) && isset($edinici[$y][$tri])) { $str .= ' '.$edinici[$y][$tri]; } else { $str .= ' '.$edinici[$y]; } } else { if($edinici[$y % 10]) { $str .= $desetici[(int) ($y / 10)]; $str .= ' и'; if(is_array($edinici[$y % 10]) && isset($edinici[$y % 10][$tri])) { $str .= $edinici[$y % 10][$tri]; } else { $str .= $edinici[$y % 10]; } } else { $str .= ' и'.$desetici[(int) ($y / 10)]; } } // добавÑне на модификатор - хилÑди, милиони, билиони if ($str != "") { //Ðко има зададени опции за единÑтвено и мн. чиÑло if(is_array($tripleti[$tri])) { //мн. чиÑло ли е? if($num > 1) { $str .= $tripleti[$tri][1]; } else { $str .= $tripleti[$tri][0]; } } else { $str .= $tripleti[$tri]; } $str = str_replace('един Ñтотин', 'Ñто', $str); $str = str_replace('един хилÑди', 'хилÑда', $str); } //ако Ñме на първата Ñтъпка (Ñ‚.е. определÑме чиÑлото до Ñтотици) if($tri == 0) { //добавÑме Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð·Ð° лева $str .= ' лева'; //и ако има Ñетнати Ñтотинки ги добавÑме и Ñ‚ÑÑ… if(isset($n[1])) { $str .= ' и '.$n[1].'ÑÑ‚.'; } } // продължаване рекруÑивно? if ($r > 0) { return slovom($r, $tri+1).$str; } else { return $str; } }
Initial URL
http://vladimir-ivanov.net
Initial Description
This function accept one parameter (integer or float) and returns the same number writed with words. Useful for currencies and invoices.
Initial Title
Convert numbers to words (Bulgarian language)
Initial Tags
convert
Initial Language
PHP