<?php
// Staring straight up into the sky ... oh my my
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function inclineWord( $number , $word1 , $word2 , $word5 )
{
$last2Digits = $number % 100 ;
if ( $last2Digits > 19 ) { $last2Digits = $last2Digits % 10 ; }
switch ( $last2Digits ) {
case 1 : { return " {$word1} " ; }
case 2 : case 3 : case 4 : { return " {$word2} " ; }
default : { return " {$word5} " ; }
}
}
/*
Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
если мы считаем число для мужского рода (один рубль),
и 1 — для женского (одна тысяча)
*/
function smallNumberToText( $number , $isFemale )
{
0 => 'ноль' , 10 => 'десять' , 100 => 'сто' ,
1 => 'один' , 11 => 'одиннадцать' , 20 => 'двадцать' , 200 => 'двести' ,
2 => 'два' , 12 => 'двенадцать' , 30 => 'тридцать' , 300 => 'триста' ,
3 => 'три' , 13 => 'тринадцать' , 40 => 'сорок' , 400 => 'четыреста' ,
4 => 'четыре' , 14 => 'четырнадцать' , 50 => 'пятьдесят' , 500 => 'пятьсот' ,
5 => 'пять' , 15 => 'пятнадцать' , 60 => 'шестьдесят' , 600 => 'шестьсот' ,
6 => 'шесть' , 16 => 'шестнадцать' , 70 => 'семьдесят' , 700 => 'семьсот' ,
7 => 'семь' , 17 => 'семнадцать' , 80 => 'восемьдесят' , 800 => 'восемьсот' ,
8 => 'восемь' , 18 => 'восемнадцать' , 90 => 'девяносто' , 900 => 'девятьсот' ,
9 => 'девять' , 19 => 'девятнадцать'
) ;
1 => 'одна' ,
2 => 'две'
) ;
if ( $number == 0 ) {
return null ;
}
if ( $isFemale == 1 ) {
return $femaleSpelling [ $number ] ;
}
}
else {
return $spelling [ $number ] ;
}
}
$last2Digits = $number % 100 ;
$hundreds = floor ( $number / 100 ) * 100 ; $tens = floor ( $number % 100 / 10 ) * 10 ; $units = $number % 10 ;
if ( $hundreds > 0 ) {
}
if ( $last2Digits >= 11 && $last2Digits <= 19 ) {
}
else {
if ( $tens > 0 ) {
}
if ( $units > 0 ) {
if ( $isFemale == 1 ) {
}
else {
}
}
}
}
function numberToText( $number )
{
if ( $number == 0 ) {
$str = "ноль рублей" ;
return $str ;
}
$hundredsDigits = $number % 1000 ;
$thousandsDigits = ( floor ( $number / 1000 ) ) % 1000 ;
$checkFemale = $thousandsDigits % 10 ;
if ( $checkFemale == 1 || $checkFemale == 2 || $thousandsDigits == 1 || $thousandsDigits == 2 ) {
$thousandsWords = smallNumberToText( $thousandsDigits , 1 ) ;
}
else {
$thousandsWords = smallNumberToText( $thousandsDigits , 0 ) ;
}
$millionsDigits = ( ( floor ( $number / 1000 ) ) / 1000 ) % 1000 ;
$hundredsWords = smallNumberToText( $hundredsDigits , 0 ) ;
$millionsWords = smallNumberToText( $millionsDigits , 0 ) ;
if ( $millionsDigits > 0 ) {
$millionsWords .= inclineWord( $millionsDigits , "миллион" , "миллиона" , "миллионов" ) ;
}
if ( $thousandsDigits > 0 ) {
$thousandsWords .= inclineWord( $thousandsDigits , "тысяча" , "тысячи" , "тысяч" ) ;
}
$words = array ( $millionsWords , $thousandsWords , $hundredsWords ) ;
$str .= inclineWord( $number , "рубль" , "рубля" , "рублей" ) ;
}
/* Вызовем функцию несколько раз */
$amount1 = 901999999 ;
$text1 = numberToText( $amount1 ) ;
echo "На вашем счету {$text1} \n " ;
$amount2 = 0 ;
$text2 = numberToText( $amount2 ) ;
echo "На вашем счету {$text2} \n " ;
$amount3 = 1 ;
$text3 = numberToText( $amount3 ) ;
echo "На вашем счету {$text3} \n " ;
$amount4 = 11012013 ;
$text4 = numberToText( $amount4 ) ;
echo "На вашем счету {$text4} \n " ;
$amount5 = 7000008 ;
$text5 = numberToText( $amount5 ) ;
echo "На вашем счету {$text5} \n " ;
$amount6 = 1000 ;
$text6 = numberToText( $amount6 ) ;
echo "На вашем счету {$text6} \n " ;
$amount7 = 71000 ;
$text7 = numberToText( $amount7 ) ;
echo "На вашем счету {$text7} \n " ;
$amount8 = 101000 ;
$text8 = numberToText( $amount8 ) ;
echo "На вашем счету {$text8} \n " ;
$amount9 = 82000 ;
$text9 = numberToText( $amount9 ) ;
echo "На вашем счету {$text9} \n " ;
PD9waHAKLy8gU3RhcmluZyBzdHJhaWdodCB1cCBpbnRvIHRoZSBza3kgLi4uIG9oIG15IG15CmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKLyog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnRg9GOINGH0LjRgdC70YMg0YTQvtGA0LzRgyDRgdC70L7QstCwOiAxINGA0YPQsdC70YwsIDIg0YDRg9Cx0LvRjywgNSDRgNGD0LHQu9C10LkgKi8KZnVuY3Rpb24gaW5jbGluZVdvcmQoJG51bWJlciwgJHdvcmQxLCAkd29yZDIsICR3b3JkNSkKewoJJGxhc3QyRGlnaXRzID0gJG51bWJlciAlIDEwMDsKCWlmICgkbGFzdDJEaWdpdHMgPiAxOSkgeyAkbGFzdDJEaWdpdHMgPSAkbGFzdDJEaWdpdHMgJSAxMDsgfQoJc3dpdGNoICgkbGFzdDJEaWdpdHMpIHsKICAgIAljYXNlIDE6ICB7IHJldHVybiAiIHskd29yZDF9IjsgfQogICAgCWNhc2UgMjogY2FzZSAzOiBjYXNlIDQ6ICB7IHJldHVybiAiIHskd29yZDJ9IjsgfQogICAgCWRlZmF1bHQ6IHsgcmV0dXJuICIgeyR3b3JkNX0iOyB9Cgl9Cn0KCi8qCtCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0YfQuNGB0LvQsCDQvtGCIDAg0LTQviA5OTkg0LIg0YLQtdC60YHRgi4g0J/QsNGA0LDQvNC10YLRgCAkaXNGZW1hbGUg0YDQsNCy0LXQvSDQvdGD0LvRjiwgCtC10YHQu9C4INC80Ysg0YHRh9C40YLQsNC10Lwg0YfQuNGB0LvQviDQtNC70Y8g0LzRg9C20YHQutC+0LPQviDRgNC+0LTQsCAo0L7QtNC40L0g0YDRg9Cx0LvRjCksIArQuCAxIOKAlCDQtNC70Y8g0LbQtdC90YHQutC+0LPQviAo0L7QtNC90LAg0YLRi9GB0Y/Rh9CwKSAKKi8KZnVuY3Rpb24gc21hbGxOdW1iZXJUb1RleHQoJG51bWJlciwgJGlzRmVtYWxlKQp7CiAgICAKICAgICRzcGVsbGluZyA9IGFycmF5KAogICAgICAgIDAgICA9PiAgJ9C90L7Qu9GMJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgID0+ICAn0LTQtdGB0Y/RgtGMJywgICAgICAgMTAwID0+ICAn0YHRgtC+JywKICAgICAgICAxICAgPT4gICfQvtC00LjQvScsICAgICAgICAgMTEgID0+ICAn0L7QtNC40L3QvdCw0LTRhtCw0YLRjCcsICAgICAgMjAgID0+ICAn0LTQstCw0LTRhtCw0YLRjCcsICAgICAyMDAgPT4gICfQtNCy0LXRgdGC0LgnLAogICAgICAgIDIgICA9PiAgJ9C00LLQsCcsICAgICAgICAgIDEyICA9PiAgJ9C00LLQtdC90LDQtNGG0LDRgtGMJywgICAgICAgMzAgID0+ICAn0YLRgNC40LTRhtCw0YLRjCcsICAgICAzMDAgPT4gICfRgtGA0LjRgdGC0LAnLAogICAgICAgIDMgICA9PiAgJ9GC0YDQuCcsICAgICAgICAgIDEzICA9PiAgJ9GC0YDQuNC90LDQtNGG0LDRgtGMJywgICAgICAgNDAgID0+ICAn0YHQvtGA0L7QuicsICAgICAgICA0MDAgPT4gICfRh9C10YLRi9GA0LXRgdGC0LAnLAogICAgICAgIDQgICA9PiAgJ9GH0LXRgtGL0YDQtScsICAgICAgIDE0ICA9PiAgJ9GH0LXRgtGL0YDQvdCw0LTRhtCw0YLRjCcsICAgICA1MCAgPT4gICfQv9GP0YLRjNC00LXRgdGP0YInLCAgICA1MDAgPT4gICfQv9GP0YLRjNGB0L7RgicsCiAgICAgICAgNSAgID0+ICAn0L/Rj9GC0YwnLCAgICAgICAgIDE1ICA9PiAgJ9C/0Y/RgtC90LDQtNGG0LDRgtGMJywgICAgICAgNjAgID0+ICAn0YjQtdGB0YLRjNC00LXRgdGP0YInLCAgIDYwMCA9PiAgJ9GI0LXRgdGC0YzRgdC+0YInLAogICAgICAgIDYgICA9PiAgJ9GI0LXRgdGC0YwnLCAgICAgICAgMTYgID0+ICAn0YjQtdGB0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgNzAgID0+ICAn0YHQtdC80YzQtNC10YHRj9GCJywgICAgNzAwID0+ICAn0YHQtdC80YzRgdC+0YInLCAgICAKICAgICAgICA3ICAgPT4gICfRgdC10LzRjCcsICAgICAgICAgMTcgID0+ICAn0YHQtdC80L3QsNC00YbQsNGC0YwnLCAgICAgICA4MCAgPT4gICfQstC+0YHQtdC80YzQtNC10YHRj9GCJywgICA4MDAgPT4gICfQstC+0YHQtdC80YzRgdC+0YInLAogICAgICAgIDggICA9PiAgJ9Cy0L7RgdC10LzRjCcsICAgICAgIDE4ICA9PiAgJ9Cy0L7RgdC10LzQvdCw0LTRhtCw0YLRjCcsICAgICA5MCAgPT4gICfQtNC10LLRj9C90L7RgdGC0L4nLCAgICAgOTAwID0+ICAn0LTQtdCy0Y/RgtGM0YHQvtGCJywKICAgICAgICA5ICAgPT4gICfQtNC10LLRj9GC0YwnLCAgICAgICAxOSAgPT4gICfQtNC10LLRj9GC0L3QsNC00YbQsNGC0YwnICAgIAogICAgKTsKICAgIAogICAgJGZlbWFsZVNwZWxsaW5nID0gYXJyYXkoCiAgICAgICAgMSA9PiAn0L7QtNC90LAnLAogICAgICAgIDIgPT4gJ9C00LLQtScKICAgICk7CiAgICAKICAgICRzdHIgPSBhcnJheSgpOwogICAgCiAgICBpZigkbnVtYmVyID09IDApewogICAgCXJldHVybiBudWxsOwogICAgfQogICAgCiAgICBpZigkaXNGZW1hbGUgPT0gMSl7CiAgICAJaWYoYXJyYXlfa2V5X2V4aXN0cygkbnVtYmVyLCAkZmVtYWxlU3BlbGxpbmcpKXsKICAgIAkJcmV0dXJuICRmZW1hbGVTcGVsbGluZ1skbnVtYmVyXTsKICAgIAl9CiAgICB9CiAgICBlbHNlewogICAgCWlmIChhcnJheV9rZXlfZXhpc3RzKCRudW1iZXIsICRzcGVsbGluZykpIHsKICAgIAkJcmV0dXJuICRzcGVsbGluZ1skbnVtYmVyXTsKICAgIAl9CQkKICAgIH0KICAgIAogICAgJGxhc3QyRGlnaXRzID0gJG51bWJlciAlIDEwMDsKICAgIAogICAgJGh1bmRyZWRzICAgID0gZmxvb3IoJG51bWJlciAvIDEwMCkgKiAxMDA7CiAgICAkdGVucyAgICAgICAgPSBmbG9vcigkbnVtYmVyICUgMTAwIC8gMTApICogMTA7CiAgICAkdW5pdHMgICAgICAgPSAkbnVtYmVyICUgMTA7CiAgIAogICAgaWYgKCRodW5kcmVkcyA+IDApIHsKICAgICAgCWFycmF5X3B1c2goJHN0ciwgJHNwZWxsaW5nWyRodW5kcmVkc10pOwogICAgfQogICAgaWYoJGxhc3QyRGlnaXRzID49IDExICYmICRsYXN0MkRpZ2l0cyA8PSAxOSl7CiAgICAJYXJyYXlfcHVzaCgkc3RyLCAkc3BlbGxpbmdbJGxhc3QyRGlnaXRzXSk7CiAgICB9CiAgICBlbHNlewogICAgCWlmICgkdGVucyA+IDApIHsKICAgICAgCQlhcnJheV9wdXNoKCRzdHIsICRzcGVsbGluZ1skdGVuc10pOwogICAgCX0KICAgIAlpZiAoJHVuaXRzID4gMCkgewogICAgCQlpZigkaXNGZW1hbGUgPT0gMSl7CiAgICAJCQlhcnJheV9wdXNoKCRzdHIsICRmZW1hbGVTcGVsbGluZ1skdW5pdHNdKTsJCQkKICAgIAkJfQogICAgCQllbHNlewogICAgCQkJYXJyYXlfcHVzaCgkc3RyLCAkc3BlbGxpbmdbJHVuaXRzXSk7CQkKICAgIAkJfQogICAgCX0KICAgIH0JCiAgICAkc3RyID0gaW1wbG9kZSgkc3RyLCAiICIpOwogICAgcmV0dXJuIHRyaW0oJHN0cik7Cn0KCmZ1bmN0aW9uIG51bWJlclRvVGV4dCgkbnVtYmVyKQp7CgkKCWlmKCRudW1iZXIgPT0gMCl7CgkJJHN0ciA9ICLQvdC+0LvRjCDRgNGD0LHQu9C10LkiOwoJCXJldHVybiAkc3RyOwoJfQoJCgkkaHVuZHJlZHNEaWdpdHMgPSAkbnVtYmVyICUgMTAwMDsKICAgICR0aG91c2FuZHNEaWdpdHMgPSAoZmxvb3IoJG51bWJlciAvIDEwMDApKSAlIDEwMDA7CiAgICAKICAgICRjaGVja0ZlbWFsZSA9ICR0aG91c2FuZHNEaWdpdHMgJSAxMDsKICAgIAogICAgaWYoJGNoZWNrRmVtYWxlID09IDEgfHwgJGNoZWNrRmVtYWxlID09IDIgfHwgJHRob3VzYW5kc0RpZ2l0cyA9PSAxIHx8ICR0aG91c2FuZHNEaWdpdHMgPT0gMil7CiAgICAJJHRob3VzYW5kc1dvcmRzID0gc21hbGxOdW1iZXJUb1RleHQoJHRob3VzYW5kc0RpZ2l0cywgMSk7CiAgICB9CiAgICBlbHNlewogICAgCSR0aG91c2FuZHNXb3JkcyA9IHNtYWxsTnVtYmVyVG9UZXh0KCR0aG91c2FuZHNEaWdpdHMsIDApOwogICAgfQogICAgCiAgICAkbWlsbGlvbnNEaWdpdHMgPSAoKGZsb29yKCRudW1iZXIgLyAxMDAwKSkgLyAxMDAwKSAlIDEwMDA7CiAgICAKICAgICRodW5kcmVkc1dvcmRzID0gc21hbGxOdW1iZXJUb1RleHQoJGh1bmRyZWRzRGlnaXRzLCAwKTsKICAgIAogICAgJG1pbGxpb25zV29yZHMgPSBzbWFsbE51bWJlclRvVGV4dCgkbWlsbGlvbnNEaWdpdHMsIDApOwogICAgCiAgICBpZigkbWlsbGlvbnNEaWdpdHMgPiAwKXsKICAgIAkkbWlsbGlvbnNXb3JkcyAuPSBpbmNsaW5lV29yZCgkbWlsbGlvbnNEaWdpdHMsICLQvNC40LvQu9C40L7QvSIsICLQvNC40LvQu9C40L7QvdCwIiwgItC80LjQu9C70LjQvtC90L7QsiIpOwogICAgfQogICAgaWYoJHRob3VzYW5kc0RpZ2l0cyA+IDApewogICAgCSR0aG91c2FuZHNXb3JkcyAuPSBpbmNsaW5lV29yZCgkdGhvdXNhbmRzRGlnaXRzLCAi0YLRi9GB0Y/Rh9CwIiwgItGC0YvRgdGP0YfQuCIsICLRgtGL0YHRj9GHIik7CiAgICB9CiAgICAKICAgICR3b3JkcyA9IGFycmF5KCRtaWxsaW9uc1dvcmRzLCAkdGhvdXNhbmRzV29yZHMsICRodW5kcmVkc1dvcmRzKTsKICAgICR3b3JkcyA9IGFycmF5X2ZpbHRlcigkd29yZHMpOwogICAKICAgICRzdHIgPSBpbXBsb2RlKCR3b3JkcywgIiAiKTsKICAgICRzdHIgLj0gaW5jbGluZVdvcmQoJG51bWJlciwgItGA0YPQsdC70YwiLCAi0YDRg9Cx0LvRjyIsICLRgNGD0LHQu9C10LkiKTsKICAgIHJldHVybiB0cmltKCRzdHIpOwp9CgovKiDQktGL0LfQvtCy0LXQvCDRhNGD0L3QutGG0LjRjiDQvdC10YHQutC+0LvRjNC60L4g0YDQsNC3ICovCiRhbW91bnQxID0gOTAxOTk5OTk5OwokdGV4dDEgICA9IG51bWJlclRvVGV4dCgkYW1vdW50MSk7CgplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQxfVxuIjsKCiRhbW91bnQyID0gMDsKJHRleHQyICAgPSBudW1iZXJUb1RleHQoJGFtb3VudDIpOwoKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0Mn1cbiI7CgokYW1vdW50MyA9IDE7CiR0ZXh0MyAgID0gbnVtYmVyVG9UZXh0KCRhbW91bnQzKTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDN9XG4iOwoKJGFtb3VudDQgPSAxMTAxMjAxMzsKJHRleHQ0ICAgPSBudW1iZXJUb1RleHQoJGFtb3VudDQpOwoKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0NH1cbiI7CgokYW1vdW50NSA9IDcwMDAwMDg7CiR0ZXh0NSAgID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ1KTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDV9XG4iOwoKJGFtb3VudDYgPSAxMDAwOwokdGV4dDYgICA9IG51bWJlclRvVGV4dCgkYW1vdW50Nik7CgplY2hvICLQndCwINCy0LDRiNC10Lwg0YHRh9C10YLRgyB7JHRleHQ2fVxuIjsKCiRhbW91bnQ3ID0gNzEwMDA7CiR0ZXh0NyAgID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ3KTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDd9XG4iOwoKJGFtb3VudDggPSAxMDEwMDA7CiR0ZXh0OCAgID0gbnVtYmVyVG9UZXh0KCRhbW91bnQ4KTsKCmVjaG8gItCd0LAg0LLQsNGI0LXQvCDRgdGH0LXRgtGDIHskdGV4dDh9XG4iOwoKJGFtb3VudDkgPSA4MjAwMDsKJHRleHQ5ICAgPSBudW1iZXJUb1RleHQoJGFtb3VudDkpOwoKZWNobyAi0J3QsCDQstCw0YjQtdC8INGB0YfQtdGC0YMgeyR0ZXh0OX1cbiI7