хотя возможно и не с того... портировано "дословно" Код (Text): <? $state=array('mlrd','mil','th','dum1_','dum2_'); $names=array('миллиард','миллион','тысяч'); $digm=array('','один','два','три','четыре','пять','шесть','семь','восемь','девять','десять','одинадцать','двенадцать','тринадцать','четырнадцать','пятьнадцать','шестьнадцать','семьнадцать','восемьнадцать','девятьнадцать'); $digj=array('','одна','две','три','четыре','пять','шесть','семь','восемь','девять','десять','одинадцать','двенадцать','тринадцать','четырнадцать','пятьнадцать','шестьнадцать','семьнадцать','восемьнадцать','девятьнадцать'); $dig10=array('','','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто'); $dig100=array('','сто','двести','тристо','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот'); $ends=array( array('','а','ов'), array('','а','ов'), array('а','и',''), ); function str_to_int($s,$pos,$count){ return intval(substr($s,($pos-1),$count)); } function num3totext($s,$st) { global $state; global $names; global $digm; global $digj; global $dig10; global $dig100; global $ends; $result=''; if($s=="0"){ return $result; } $result.=$dig100[str_to_int($s,1,1)]; if(str_to_int($s,2,2)<="19"){ if($st=='th'){ $result.=' '.$digj[str_to_int($s,2,2)]; }else{ $result.=' '.$digm[str_to_int($s,2,2)]; } }else{ $result.=' '.$dig10[str_to_int($s,2,1)]; if($st=='th'){ $result.=' '.$digj[str_to_int($s,3,1)]; }else{ $result.=' '.$digm[str_to_int($s,3,1)]; } } $indexes=-1; if($st=='mlrd'){ $indexes=0; }elseif($st=='mil'){ $indexes=1; }elseif($st=='th'){ $indexes=2; } if($indexes>=0){ if(str_to_int($s,2,1)=="0"){ $stm=str_to_int($s,3,1); if(in_array($stm,array('1'))){ $result.=' '.$names[$indexes].$ends[$indexes][0]; }elseif(in_array($stm,array('2','3','4'))){ $result.=' '.$names[$indexes].$ends[$indexes][1]; }elseif(in_array($stm,array('0','5','6','7','8','9'))){ $result.=' '.$names[$indexes].$ends[$indexes][2]; } }else{ if(str_to_int($s,2,1)=="1"){ $result.=' '.$names[$indexes].$ends[$indexes][2]; }else{ $stm=str_to_int($s,3,1); if(in_array($stm,array('1'))){ $result.=' '.$names[$indexes].$ends[$indexes][0]; }elseif(in_array($stm,array('2','3','4'))){ $result.=' '.$names[$indexes].$ends[$indexes][1]; }elseif(in_array($stm,array('0','5','6','7','8','9'))){ $result.=' '.$names[$indexes].$ends[$indexes][2]; } } } } return $result; } function repeat_until($result,$n,$st,$s){ global $state; // :))))) $result=' '.num3totext(substr($s,($n-1),3),$state[$st]); $st++; $n=$n+3; if($n>12){ return $result; }else{ return $result.repeat_until($result,$n,$st,$s); } } function num2text($i){ $str=str_repeat('0',12-strlen($i)).$i; return trim(repeat_until('',1,0,$str)); } $test=8125481458; echo num2text($test); ?>