Перевод числа в строку.
Полностью готовый и рабочий скрипт PHP Цифры прописью:
function num_propis($num){ // $num - цело число
# Все варианты написания чисел прописью от 0 до 999 скомпонуем в один небольшой массив
$m=array(
array('ноль'),
array('-','один','два','три','четыре','пять','шесть','семь','восемь','девять'),
array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать'),
array('-','-','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто'),
array('-','сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот'),
array('-','одна','две')
);
# Все варианты написания разрядов прописью скомпануем в один небольшой массив
$r=array(
array('...ллион','','а','ов'), // используется для всех неизвестно больших разрядов
array('тысяч','а','и',''),
array('миллион','','а','ов'),
array('миллиард','','а','ов'),
array('триллион','','а','ов'),
array('квадриллион','','а','ов'),
array('квинтиллион','','а','ов')
// ,array(... список можно продолжить
);
if($num==0)return$m[0][0]; # Если число ноль, сразу сообщить об этом и выйти
$o=array(); # Сюда записываем все получаемые результаты преобразования
# Разложим исходное число на несколько трехзначных чисел и каждое полученное такое число обработаем отдельно
foreach(array_reverse(str_split(str_pad($num,ceil(strlen($num)/3)*3,'0',STR_PAD_LEFT),3))as$k=>$p){
$o[$k]=array();
# Алгоритм, преобразующий трехзначное число в строку прописью
foreach($n=str_split($p)as$kk=>$pp)
if(!$pp)continue;else
switch($kk){
case 0:$o[$k][]=$m[4][$pp];break;
case 1:if($pp==1){$o[$k][]=$m[2][$n[2]];break 2;}else$o[$k][]=$m[3][$pp];break;
case 2:if(($k==1)&&($pp<=2))$o[$k][]=$m[5][$pp];else$o[$k][]=$m[1][$pp];break;
}$p*=1;if(!$r[$k])$r[$k]=reset($r);
# Алгоритм, добавляющий разряд, учитывающий окончание руского языка
if($p&&$k)switch(true){
case preg_match("/^[1]$|^\\d*[0,2-9][1]$/",$p):$o[$k][]=$r[$k][0].$r[$k][1];break;
case preg_match("/^[2-4]$|\\d*[0,2-9][2-4]$/",$p):$o[$k][]=$r[$k][0].$r[$k][2];break;
default:$o[$k][]=$r[$k][0].$r[$k][3];break;
}$o[$k]=implode(' ',$o[$k]);
}
return implode(' ',array_reverse($o));
}
Скачайте исходный PHP файл propis.php, вставьте его содержимое в свой скрипт или подключите файл с помощью команды:include 'propis.php';
Пропишите в своём скрипте:echo num_propis(5238);
Результатом выполнения будет строка:пять тысяч двеcти тридцать восемь
Смотри также: сумма прописью на javascript.
При использовании материалов статьи, ссылка на статью Число прописью обязательна.
Заполнить реквизиты и сохранить счет на оплату онлайн в формате PDF
Укажите Заказчика и Исполнителя, и получите готовый Акт
Укажите Получателя, доверенное лицо и получите готовую Доверенность
Получить электронную выписку из налоговой инспекции
Инструмент конвертирует сумму прописью с выбором НДС и валюты
Отправить электронную отчетность