phpviet/number-to-words

支持将数字转换为文字的库。

1.3.0 2021-10-16 14:39 UTC

This package is auto-updated.

Last update: 2024-09-16 21:11:51 UTC


README

数字转文字


Latest version Build status Quantity score StyleCI Total download License

信息

支持将数字转换为越南文字的库。

安装

通过 Composer 安装 Number To Words

composer require phpviet/number-to-words

用法

支持集成到当前流行的各种框架

或者如果您想使用非框架版本,请继续查看。

库的功能

将数字转换为文字

库提供了 PHPViet\NumberToWords\Transformer 类,通过该类的 toWords 方法进行转换。

use PHPViet\NumberToWords\Transformer;

$transformer = new Transformer();

// âm năm
$transformer->toWords(-5); 

// năm
$transformer->toWords(5); 

// năm phẩy năm
$transformer->toWords(5.5); 

// mười lăm
$transformer->toWords(15); 

// một trăm linh năm
$transformer->toWords(105); 

// bốn
$transformer->toWords(4); 

// mười bốn
$transformer->toWords(14);

// hai mươi tư
$transformer->toWords(24); 

// một trăm ba mươi tư
$transformer->toWords(134); 

// một
$transformer->toWords(1); // một

// mười một
$transformer->toWords(11); 

// hai mươi mốt
$transformer->toWords(21); 

 // một trăm nghìn không trăm hai mươi mốt.
$transformer->toWords(100021);

// một trăm ba mươi mốt triệu không trăm năm mươi nghìn không trăm ba mươi lăm
$transformer->toWords(131050035);

将数字转换为货币

与数字转文字的用法相同,我们使用 PHPViet\NumberToWords\Transformer 类来执行任务。

use PHPViet\NumberToWords\Transformer;

$transformer = new Transformer();

// năm triệu sáu trăm chín mươi nghìn bảy trăm đồng
$transformer->toCurrency(5690700);

// chín mươi lăm triệu năm trăm nghìn hai trăm đồng
$transformer->toCurrency(95500200);

// tám trăm năm mươi tư triệu chín trăm đồng
$transformer->toCurrency(854000900);

在某些货币中,您需要根据换算单位改变读数方式,例如 1 美元 = 100 美分。

use PHPViet\NumberToWords\Transformer;

// Đặt số chữ số phần thập phân (tham số đầu tiên Dictionary có thể null)
$transformer = new Transformer(null, 2);

// năm mươi sáu đô chín mươi xen, thay vì năm mươi sáu đô chín xen
$transformer->toCurrency(56.90);

此外,我们还可以通过 toCurrency 方法的第二个参数使用其他货币单位,其中数组的第一个元素是整数部分的单位,后面跟着分数的单位。

use PHPViet\NumberToWords\Transformer;

$transformer = new Transformer();

// sáu nghìn bảy trăm bốn mươi hai đô bảy xen
$transformer->toCurrency(6742.7, ['đô', 'xen']);

// chín nghìn bốn trăm chín mươi hai đô mười lăm xen
$transformer->toCurrency(9492.15, ['đô', 'xen']);

// tám nghìn ba trăm sáu mươi mốt đô bốn xen
$transformer->toCurrency('8361.40', ['đô', 'xen']);

改变读数方式

除了标准读数方式外,库还提供了 PHPViet\NumberToWords\SouthDictionary 类,帮助我们以南方风格读取数字。

use PHPViet\NumberToWords\Transformer;
use PHPViet\NumberToWords\SouthDictionary;

$transformer = new Transformer();
$southDictionary = new SouthDictionary();
$southTransformer = new Transformer($southDictionary);

$transformer->toWords(101); // một trăm linh một
$southTransformer->toWords(101); // một trăm lẻ một

$transformer->toWords(1000); // một nghìn
$southTransformer->toWords(1000); // một ngàn

$transformer->toWords(24) // hai mươi tư
$southTransformer->toWords(24); // hai mươi bốn

$transformer->toCurrency(124001); // một trăm hai mươi tư nghìn không trăm linh một
$southTransformer->toCurrency(124001); // một trăm hai mươi bốn ngàn không trăm lẻ một

如果您想根据您的意愿改变读数方式,请创建一个继承自 PHPViet\NumberToWords\DictionaryDictionary 类或实现 PHPViet\NumberToWords\DictionaryInterface 抽象类。

use PHPViet\NumberToWords\Dictionary;
use PHPViet\NumberToWords\Transformer;

class MyDictionary extends Dictionary {

    /**
     * @inheritDoc
     */
    public function specialTripletUnitFive(): string
    {
        return 'nhăm';
    }

}

$transformer = new Transformer();
$myDictionary = new MyDictionary();
$myTransformer = new Transformer($myDictionary);

$transformer->toWords(15); // mười lăm
$myTransformer->toWords(15); // mười nhăm

面向开发者

如果您觉得这个库还有不足或错误,并且想共同开发,我们非常欢迎!请创建 issue 来为下一个版本提供想法或创建 PR 来贡献。感谢!