是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数
Posted
技术标签:
【中文标题】是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数【英文标题】:Is there a PHP function equivalent to JavaScript function toLocaleString() 【发布时间】:2018-02-25 07:36:01 【问题描述】:我在寻找一个预建的数字格式化函数,偶然发现了这个 JS 函数toLocaleString()
。这个函数正是我想要它做的。
例如,我有一个想要格式化的数字,比如说1234567890.123
。我希望将此号码格式化为1,23,45,67,890.123
和1,234,567,890.123
。
使用 JS 函数,我这样做并得到了所需的输出
var number = 1234567890.123;
number.toLocaleString('hi-IN'); //1,23,45,67,890.123
number.toLocaleString('en'); //1,234,567,890.123
但是,我想知道是否有使用 php 的内置方法。
注意:money_format() 不是我想要的,我只是想 知道PHP中是否也存在这样的功能。如果没有,没问题, 我必须编写一个自定义函数。
【问题讨论】:
检查Internationalization Functions,可能是您可能需要的任何类,例如NumberFormatter 【参考方案1】:PHP 确实允许Number Formatting,但没有一个函数可以与 javascript 的 toLocaleString() 完全一样。
这里提供了最好的等价物:How to display Currency in Indian Numbering Format in PHP
PHP 的 NumberFormatter 可用于格式化小数。 JavaScript 实现在浏览器客户端设置区域设置值,然后输出结果。
PHP 有类似的方法来设置语言环境值,但在服务器上执行。这可能会导致意想不到的后果。
"警告:语言环境信息是按进程维护的,而不是按线程维护的。如果您在 Windows 上的 IIS、HHVM 或 Apache 等多线程服务器 API 上运行 PHP,您可能会遇到突然的变化脚本运行时的语言环境设置,尽管脚本本身从未调用 setlocale()。这是由于其他脚本同时在同一进程的不同线程中运行,使用 setlocale() 更改了进程范围的语言环境。来源:http://php.net/manual/en/function.setlocale.php
【讨论】:
嗨,迈克,感谢您的回复。在发表这篇文章之前,我已经检查了货币问题。它确实在某种程度上产生了所需的输出,但不完全是我想要的。我只是想知道是否有任何函数可以完全执行 toLocaleString() 的功能。好像没有。谢谢。【参考方案2】:使用
$x = 45604586;
number_format($x);
输出:45,604,586
【讨论】:
这样一个简单的解决方案。谢谢分享。【参考方案3】:按照this answer 中关于The NumberFormatter class 的链接,我能够在JavaScript 中完成与toLocaleString()
完全相同的操作:
$locale = 'en';
$currency = 'EUR';
$price = 45604586;
$fmt = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$formattedPrice = $fmt->formatCurrency($price, $currency);
echo $formattedPrice;
打印出来:
€45,604,586.00
【讨论】:
以上是关于是否有相当于 JavaScript 函数 toLocaleString() 的 PHP 函数的主要内容,如果未能解决你的问题,请参考以下文章
javascript中是不是有相当于“新数组(数字)”的PHP?
是否有相当于独立JavaScript文件的django模板注释?
是否有相当于背景大小的img(javascript):封面?