- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
<?
class CHISLO {
private $arr = array('', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять', 'десять',
'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать',
'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
private $arr2 = array('', 'сто', 'двести', 'триста', 'четыреста');
private $ar = array(
1=>array('тысяч', 'тысяча', 'тысячи', 'тысячи', 'тысячи', 'тысяч', 'тысяч', 'тысяч', 'тысяч', 'тысяч'),
array('миллионов', 'миллион', 'миллиона', 'миллиона', 'миллиона', 'миллионов', 'миллионов',
'миллионов', 'миллионов', 'миллионов'),
array('миллиардов', 'миллиард', 'миллиарда', 'миллиарда', 'миллиарда', 'миллиардов', 'миллиардов',
'миллиардов', 'миллиардов', 'миллиардов'),
array('триллионов', 'триллион', 'триллиона', 'триллиона', 'триллиона', 'триллионов', 'триллионов',
'триллионов', 'триллионов', 'триллионов')
);
public function get_chislo($ch) {
if( $ch<1000 )
return $this->get_100($ch);
$ch = preg_split('/(?=(\d{3})+(?!\d))/is', $ch, -1, PREG_SPLIT_NO_EMPTY);
$ch = array_reverse($ch);
$result[] = $this->get_100($ch[0]);
for($i=1; $i<count($ch); $i++) {
@$result[] = $this->get_100($ch[$i]) .' '. $this->ar[$i]{$ch[$i]%10};
}
$result[1] = str_replace('один', 'одна', $result[1]);
// $result[1] = str_replace('два', 'две', $result[1]);
return join(' ', array_reverse($result));
}
private function get_100($ch) {
$c1 = (int)($ch / 100);
$c2 = $ch % 100;
if( $c1<5 )
$result = $this->arr2[$c1];
else
$result = $this->arr[$c1] . 'сот';
return @$result .' '. $this->get_10($c2);
}
private function get_10($ch) {
$c1 = (int)($ch / 10);
$c2 = $ch % 10;
if( $ch<20 ) {
$result = $this->arr[$ch];
} else if( $ch<40 ) {
$result = $this->arr[$c1] . 'дцать';
} else if( $ch<50 ) {
$result = 'сорок';
} else if( $ch<90 ) {
$result = substr( $this->arr[$c1], 0, -1 ) . 'десят';
} else if( $ch<100 ) {
$result = 'девяносто';
}
if( $ch>20 && $c2!=0 )
$result .= ' ' . $this->arr[$c2];
return $result;
}
}?>