PHPackages                             serjazz/ru-number-to-text - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. serjazz/ru-number-to-text

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

serjazz/ru-number-to-text
=========================

Convert numbers to Russian text representation

1.0.0(8mo ago)04MITPHPPHP ^8.1

Since Aug 19Pushed 8mo agoCompare

[ Source](https://github.com/serjazz/ru_number_to_text_php)[ Packagist](https://packagist.org/packages/serjazz/ru-number-to-text)[ RSS](/packages/serjazz-ru-number-to-text/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

NumberToText - Конвертер чисел в текстовое представление на русском языке
=========================================================================

[](#numbertotext---конвертер-чисел-в-текстовое-представление-на-русском-языке)

[![PHP Version](https://camo.githubusercontent.com/7535257ca228724c93658bd52583d4e47a9bab02c356abf6e54c1d575f2151e6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c75652e737667)](https://php.net/releases/8.1)[![Test Coverage](https://camo.githubusercontent.com/bc1d69b90a73ba8af00698e14b0ee0822b299e16335f5c125b5fc6dbc00bb105/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d39382532352d677265656e)](https://github.com/serjazz/ru-number-to-text)

PHP-библиотека для преобразования чисел в их текстовое представление на русском языке с учётом грамматических правил. Портированная реализация Python-библиотеки [seriyps/ru\_number\_to\_text](https://github.com/seriyps/ru_number_to_text).

Особенности
-----------

[](#особенности)

- Преобразование целых чисел (-999 млрд до +999 млрд)
- Обработка дробных чисел (денежный и неденежный режим)
- Автоматическое склонение единиц измерения:
    - Род (мужской/женский)
    - Формы единственного/множественного числа
- Поддержка отрицательных чисел
- Без внешних зависимостей

Установка
---------

[](#установка)

```
composer require serjazz/ru-number-to-text
```

Базовое использование
---------------------

[](#базовое-использование)

### Преобразование целых чисел

[](#преобразование-целых-чисел)

```
use Serjazz\RuNumberToText\NumberToText;

$converter = new NumberToText();

echo $converter->num2text(42); // "сорок два"
echo $converter->num2text(1234); // "одна тысяча двести тридцать четыре"
echo $converter->num2text(-567); // "минус пятьсот шестьдесят семь"
```

### Работа с единицами измерения

[](#работа-с-единицами-измерения)

```
// Рубль (мужской род)
$rubUnits = [['рубль', 'рубля', 'рублей'], 'm'];
echo $converter->num2text(101, $rubUnits); // "сто один рубль"
echo $converter->num2text(102, $rubUnits); // "сто два рубля"
echo $converter->num2text(105, $rubUnits); // "сто пять рублей"

// Копейка (женский род)
$kopUnits = [['копейка', 'копейки', 'копеек'], 'f'];
echo $converter->num2text(101, $kopUnits); // "сто одна копейка"
echo $converter->num2text(102, $kopUnits); // "сто две копейки"
echo $converter->num2text(105, $kopUnits); // "сто пять копеек"
```

### Работа с дробными числами

[](#работа-с-дробными-числами)

```
// Денежный режим (рубли/копейки)
$rubUnits = [['рубль', 'рубля', 'рублей'], 'm'];
$kopUnits = [['копейка', 'копейки', 'копеек'], 'f'];

echo $converter->decimal2text(123.45, 2, $rubUnits, $kopUnits, false);
// "сто двадцать три рубля сорок пять копеек"

echo $converter->decimal2text(5.99, 2, $rubUnits, $kopUnits, false);
// "пять рублей девяносто девять копеек"

// Неденежный режим (метры/сантиметры)
$meterUnits = [['метр', 'метра', 'метров'], 'm'];
$cmUnits = [['сантиметр', 'сантиметра', 'сантиметров'], 'm'];

echo $converter->decimal2text(3.75, 2, $meterUnits, $cmUnits);
// "три метра семьдесят пять сантиметров"

echo $converter->decimal2text(5.50, 2, $meterUnits, $cmUnits);
// "пять метров пятьдесят сантиметров"
```

Документация методов
--------------------

[](#документация-методов)

num2text(int $num, ?array $units = null): string

Преобразует целое число в текстовое представление.

### Параметры:

[](#параметры)

- $num: Целое число в диапазоне от -999 999 999 999 до 999 999 999 999
- $units: Массив конфигурации единиц измерения:

```
php
[
 ['форма_1', 'форма_2-4', 'форма_5-20'], // формы для 1, 2-4, 5-20
 'род' // 'm' для мужского, 'f' для женского
]
```

### Пример:

[](#пример)

```
php
$itemUnits = [['штука', 'штуки', 'штук'], 'f'];
echo $converter->num2text(21, $itemUnits); // "двадцать одна штука"
decimal2text(float $value, int $places = 2, ?array $int_units = null, ?array $exp_units = null, bool $no_money = true): string
Преобразует дробное число в текстовое представление.
```

### Параметры:

[](#параметры-1)

- $value: Дробное число
- $places: Количество знаков после запятой (по умолчанию 2)
- $int\_units: Единицы измерения для целой части
- $exp\_units: Единицы измерения для дробной части
- $no\_money: Режим обработки:
    - true (по умолчанию): Неденежный режим (0.50 → 50)
    - false: Денежный режим (фиксированная точность, 0.50 → 50 копеек)

### Примеры:

[](#примеры)

```
php
// Денежный режим
echo $converter->decimal2text(1.01, 2, $rubUnits, $kopUnits, false);
// "один рубль одна копейка"

// Неденежный режим
echo $converter->decimal2text(7.08, 2, $meterUnits, $cmUnits);
// "семь метров восемь сантиметров"
```

Ограничения
-----------

[](#ограничения)

- Максимальное поддерживаемое число: 999 999 999 999 (999 миллиардов)
- Минимальное число: -999 999 999 999
- Денежный режим всегда использует 2 знака для дробной части
- Триллионы пока не поддерживаются

Тестирование
------------

[](#тестирование)

Библиотека имеет 98% покрытие тестами. Для запуска тестов:

```
composer test
```

Лицензия
--------

[](#лицензия)

MIT License

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance59

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

266d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/68bca72a9fcd2dfa8ccf684bdbe51cee1d4489b8c0d5e0097cdf7089104fb12b?d=identicon)[serjazz](/maintainers/serjazz)

---

Top Contributors

[![serjazz](https://avatars.githubusercontent.com/u/3530358?v=4)](https://github.com/serjazz "serjazz (6 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/serjazz-ru-number-to-text/health.svg)

```
[![Health](https://phpackages.com/badges/serjazz-ru-number-to-text/health.svg)](https://phpackages.com/packages/serjazz-ru-number-to-text)
```

###  Alternatives

[markbaker/complex

PHP Class for working with complex numbers

1.7k283.1M38](/packages/markbaker-complex)[melvinachterhuis/discount-summary-shopware6-plugin

Show discount in the summary in the cart and checkout

105.7k](/packages/melvinachterhuis-discount-summary-shopware6-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
