minsiha-it/number-to-words

多语言独立PHP数字转文字转换器。经过全面测试,开放扩展和新语言。

0.0.1 2024-01-15 10:32 UTC

This package is auto-updated.

Last update: 2024-09-28 05:28:30 UTC


README

CircleCI Code Climate Test Coverage Latest Stable Version

欢迎使用number-to-words,这是一个PHP实用工具,可以无缝地将数字值转换为相应的文字。只需几行代码,即可轻松将数字(如123)转换为表达丰富、易于阅读的格式,例如“一百二十三”。

安装

通过运行以下命令将包添加到您的composer.json中

$ composer require minsiha-it/number-to-words

使用方法

数字转文字转换有两种类型:数字和货币。为了使用特定语言的转换器,创建一个NumberToWords类的实例并调用创建所需转换器的新实例的方法;

数字转换器

使用getNumberTransformer('lang')方法创建特定语言的转换器

use NumberToWords\NumberToWords;

// create the number to words "manager" class
$numberToWords = new NumberToWords();

// build a new number transformer using the RFC 3066 language identifier
$numberTransformer = $numberToWords->getNumberTransformer('en');

可以通过将数值传递给toWords()方法来使用转换器

$numberTransformer->toWords(5120); // outputs "five thousand one hundred twenty"

它也可以使用静态方法

NumberToWords::transformNumber('en', 5120); // outputs "five thousand one hundred twenty"

货币转换器

创建货币转换器的工作方式与数字转换器相同。

use NumberToWords\NumberToWords;

// create the number to words "manager" class
$numberToWords = new NumberToWords();

// build a new currency transformer using the RFC 3066 language identifier
$currencyTransformer = $numberToWords->getCurrencyTransformer('en');

然后可以通过传递金额和ISO 4217货币标识符到toWords()方法来使用它

$currencyTransformer->toWords(5099, 'USD'); // outputs "fifty dollars ninety nine cents"

它也可以使用静态方法

NumberToWords::transformCurrency('en', 5099, 'USD'); // outputs "fifty dollars ninety nine cents"

注意:该库中的货币转换器处理整数;在转换之前,请确保您的输入金额为整数,通过将任何浮点值乘以100来确保准确。例如,使用4567作为输入来转换45.67。

可用区域设置

贡献者

一些转换器是从pear/Numbers_Words库移植过来的。其他转换器是由贡献者创建的。谢谢!

版本2.x - 兼容性和主要更改

  • 弃用了对PHP <7.4的支持。
  • NumberTransformerCurrencyTransformer接口添加了类型提示。现在,它们都只接受整数数字(阿尔巴尼亚语可能会受到影响)。
  • 添加了对PSR12的支持。

问题和答案

Q:如果在使用库时遇到错误怎么办?

A:如果您遇到错误,请在我们的GitHub仓库中打开一个问题。由于我可能不是所有语言的专家,我们鼓励用户提交修复并与我们一起增强库的功能。

Q:我的语言缺失。可以添加吗?

A:我可能不知道您的语言。您可以自由地实现缺失的语言并打开一个pull request。您可以使用现有的语言作为参考。

僧伽罗语

    $numberToWords = new NumberToWords();
    $numberTransformer = $numberToWords->getCurrencyTransformer('si');

    $inWord = $numberTransformer->toWordsDecimal(0.01, 'LKR'); // outputs "ශත එකක් පමණි"
    $inWord = $numberTransformer->toWordsDecimal(3521.00, 'LKR'); // outputs "රුපියල් තුන දහස් පන් සිය විසි එකක් පමණි"