Сумма в рублях прописью с копейками на PHP

    Комментариев нет 394

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

И снова здравствуйте. Часто возникает задача форматировать числовые значения, чаще всего какую-то сумму, прописью. Обычно это нужно вносить в различного рода бухгалтерские документы, типа счетов, накладных и пр. Это можно сделать в Excel написав определенную формулу, но так как мы здесь изучаем программирование, то напишем функцию, которая будет делать то же самое. Для этого нам понадобится встроенный в PHP класс NumberFormatter. Но для начала нужно разобраться с возможной ошибкой при попытке создания экземпляра этого класса.

Телеграм-канал serblog.ru

Fatal error: Uncaught Error: Class ‘NumberFormatter’ not found

Это значит только одно — в версии PHP, которую вы используете выключена настройка — intl и ее просто нужно включить.

Вместо:

;extension=php_intl.dll

Должно быть:

extension=php_intl.dll

То есть просто нужно раскомментировать в файле php.ini и перезагрузить вебсервер.

Функция суммы прописью

Сейчас мы напишем небольшую функцию, которая будет делать это автоматически и на вход будет принимать только один аргумент — саму сумму. После чего можно уже не задаваться вопросом: как правильно писать сумму прописью, за нас это сделает PHP.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// сумма прописью
function str_price($value)
{
    $value = explode('.', number_format($value, 2, '.', ''));
 
    $f = new \NumberFormatter('ru', \NumberFormatter::SPELLOUT);
    $str = $f->format($value[0]);
    $str2 = $f->format($value[1]);
 
    // Первую букву в верхний регистр.
    $str = mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1, mb_strlen($str));
 
    // Склонение слова "рубль".
    $num = $value[0] % 100;
    if ($num > 19) {
        $num = $num % 10;
    }
    switch ($num) {
        case 1: $rub = 'рубль'; break;
        case 2:
        case 3:
        case 4: $rub = 'рубля'; break;
        default: $rub = 'рублей';
    }
    //Копейки числом
    return $str . ' ' . $rub . ' ' . $value[1] . ' копеек.';
    // Копейки прописью
    //return $str . ' ' . $rub . ' ' . $str2 . ' копеек.';
}

После чего мы можем смело использовать эту функцию:

echo str_price(45565.6);

Получаем: Сорок пять тысяч пятьсот шестьдесят пять рублей 60 копеек.
Если же нужно, чтобы сумма в копейках тоже была прописью, то раскомментируйте второй return, а первый наоборот закомментируйте и тогда все будет работать корректно.

Сумма прописью онлайн

Специально для демонстрации работы этой функции вы можете самостоятельно протестировать ее работу и убедиться, что сумма корректно выводится прописью, учитывая копейки. Они разделяются точной, но не запятой, это нужно учитывать.

СУММА ПРОПИСЬЮ ОНЛАЙН

Сумма прописью онлайн

Любая сумма на развитие сайта

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *