PHP скрипты, MySQL, Java, документация Unix, Linux, FreeBSD, Apache, Оптимизация сайта
Библиотека компании MNWhost.RU

Web-development
Shell
PHP
Perl
Java
ASP
VB Script
HTML
XML
WML
Cookies

Документация
FreeBSD
Linux
Apache
Язык UML
Поисковые системы
Модель OSI
CGI
Технология VPN
ADSL
SSI
DNS
Протоколы
Шифрование дисков
Обжим витой пары
Маски сети/подсети

Хостинг MNW.RU
Услуги
Хостинг
Регистрация доменов
Размещение серверов
Аренда серверов


Hosted by MNW

Яндекс цитирования

Сумма прописью
Здесь я покажу число записать буквами, т.е. как можно число вида 1876543210.13 привести к прописному виду типа: один миллиард восемьсот семьдесят шесть миллионов пятьсот сорок три тысячи двести десять рублей тринадцать копеек Код, как всегда, снабжен подробными комментариями, так что не запутаетесь. Let's go:

<?
$_1_2
[1]="одна ";
$_1_2[2]="две ";

$_1_19[1]="один ";
$_1_19[2]="два ";
$_1_19[3]="три ";
$_1_19[4]="четыре ";
$_1_19[5]="пять ";
$_1_19[6]="шесть ";
$_1_19[7]="семь ";
$_1_19[8]="восемь ";
$_1_19[9]="девять ";
$_1_19[10]="десять ";
$_1_19[11]="одиннацать ";
$_1_19[12]="двенадцать ";
$_1_19[13]="тринадцать ";
$_1_19[14]="четырнадцать ";
$_1_19[15]="пятнадцать ";
$_1_19[16]="шестнадцать ";
$_1_19[17]="семнадцать ";
$_1_19[18]="восемнадцать ";
$_1_19[19]="девятнадцать ";

$des[2]="двадцать ";
$des[3]="тридцать ";
$des[4]="сорок ";
$des[5]="пятьдесят ";
$des[6]="шестьдесят ";
$des[7]="семьдесят ";
$des[8]="восемдесят ";
$des[9]="девяносто ";

$hang[1]="сто ";
$hang[2]="двести ";
$hang[3]="триста ";
$hang[4]="четыреста ";
$hang[5]="пятьсот ";
$hang[6]="шестьсот ";
$hang[7]="семьсот ";
$hang[8]="восемьсот ";
$hang[9]="девятьсот ";

$namerub[1]="рубль ";
$namerub[2]="рубля ";
$namerub[3]="рублей ";

$nametho[1]="тысяча ";
$nametho[2]="тысячи ";
$nametho[3]="тысяч ";

$namemil[1]="миллион ";
$namemil[2]="миллиона ";
$namemil[3]="миллионов ";

$namemrd[1]="миллиард ";
$namemrd[2]="миллиарда ";
$namemrd[3]="миллиардов ";

$kopeek[1]="копейка ";
$kopeek[2]="копейки ";
$kopeek[3]="копеек ";


function 
semantic($i,&$words,&$many,$f)
{
 global 
$_1_2$_1_19$des$hang$namerub$nametho$namemil$namemrd;
 
// в words будем пихать запись числа
 
$words="";
 
$fl=0;
 
//рассматриваем промежуток чисел от 100 до 999
 
if($i >= 100)
 {
  
//сколько сотен
  
$jkl intval($i 100);
  
$words.=$hang[$jkl];
  
//отбрасываем "сотенный разряд" и считаем остальные разряды
  
$i%=100;
 }
 
//рассматриваем промежуток чисел от 20 до 10 (от 20, потому что есть
 //всякие одиннадцать, двенадцать...)
 
if($i >= 20)
 {
  
$jkl intval($i 10);
  
$words.=$des[$jkl];
  
//отбрасываем рязряд десятков и остаемся с маленьким числом от 1 до 9
  
$i%=10;
  
$fl=1;
 }

 
//в $fem - индекс массива с записью чисел
 
switch($i)
 {
  case 
1$many=1; break;
  case 
2:
  case 
3:
  case 
4$many=2; break;
  default: 
$many=3; break;
 }

 
//если тысяча, то одна или две, а если нет, то один или два...
 
if($i)
 {
  if(
$i && $f == 1)
   
$words.=$_1_2[$i];
  else
   
$words.=$_1_19[$i];
 }
}

function 
num2str($L)
{
 global 
$_1_2$_1_19$des$hang$namerub$nametho$namemil$namemrd$kopeek;

 
$s=" ";
 
$s1=" ";
 
//считаем количество копеек, т.е. дробной части числа
 
$kop=intval(( $L*100 intval($L)*100 ));
 
//отбрасываем дробную часть
 
$L=intval($L);

 if(
$L>=1000000000)
 {
  
$many=0;
  
semantic(intval($L 1000000000),$s1,$many,3);
  
$s.=$s1.$namemrd[$many];
  
$L%=1000000000;
  
//если ровно сколько-то миллиардов, то хватит считать
  
if($L==0)
  {
   
$s.="рублей ";
  }
 }

 if(
$L >= 1000000)
 {
  
$many=0;
  
semantic(intval($L 1000000),$s1,$many,2);
  
$s.=$s1.$namemil[$many];
  
$L%=1000000;
  
//аналогично если ровно сколько-то миллионов, то хватит считать
  
if($L==0)
  {
   
$s.="рублей ";
  }
 }

 if(
$L >= 1000)
 {
  
$many=0;
  
semantic(intval($L 1000),$s1,$many,1);
  
$s.=$s1.$nametho[$many];
  
$L%=1000;
  if(
$L==0)
  {
   
$s.="рублей ";
  }
 }


 if(
$L != 0)
 {
  
$many=0;
  
semantic($L,$s1,$many,0);
  
$s.=$s1.$namerub[$many];
 }

 
//если есть копейки, то добавим их в итоговую строку
 
if($kop 0)
 {
  
$many=0;
  
semantic($kop,$s1,$many,1);
  
$s.=$s1.$kopeek[$many];
 }
 else
 {
  
$s.=" 00 копеек";
 }

return 
$s;
}

if (!isset(
$per))
{
 
?>
 <FORM ACTION ="<? echo $PHP_SELF?>">
 Введите положительное число, меньшее 10<sup>6<br>
 <INPUT type="text" name="per"><BR>
 <INPUT type="submit" value="Отправить">
 </FORM>
 <?
}
else echo 
num2str($per);

?>



Заценить пример можно здесь:
Введите положительное число, меньшее 106

размещение сервера