minsiha-it / number-to-words
多语言独立PHP数字转文字转换器。经过全面测试,开放扩展和新语言。
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.6.7
- squizlabs/php_codesniffer: ^3.7.2
This package is auto-updated.
Last update: 2024-09-28 05:28:30 UTC
README
欢迎使用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的支持。
- 为
NumberTransformer
和CurrencyTransformer
接口添加了类型提示。现在,它们都只接受整数数字(阿尔巴尼亚语可能会受到影响)。 - 添加了对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 "රුපියල් තුන දහස් පන් සිය විසි එකක් පමණි"