Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

"Сумма прописью"

Автор: Дмитрий Бородин

Очередной типичный вопрос созрел:

    Есть сумма: 1 245 руб. 04 коп. Надо получить: Одна тысяча двести сорок пять руб. 04 коп


Программа:

<? 
$_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,&$fem,$f){ 
global $_1_2, $_1_19, $des, $hang, $namerub, $nametho, $namemil, $namemrd; 
$words=""; 
$fl=0; 
if($i >= 100){ 
$jkl = intval($i / 100); 
$words.=$hang[$jkl]; 
$i%=100; 
} 
if($i >= 20){ 
$jkl = intval($i / 10); 
$words.=$des[$jkl]; 
$i%=10; 
$fl=1; 
} 
switch($i){ 
case 1: $fem=1; break; 
case 2: 
case 3: 
case 4: $fem=2; break; 
default: $fem=3; break; 
} 
if( $i ){ 
if( $i < 3 && $f > 0 ){ 
if ( $f >= 2 ) { 
$words.=$_1_19[$i]; 
} 
else { 
$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=" "; 
$s2=" "; 
$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 >= 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);?>

Готово ;-)

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS