3

我在 mysql 数据库中有一个“价格”字段,其中包含阿拉伯或波斯数字的产品价格。

数字示例:123455677890 //1234567890

我无法弄清楚如何对其进行格式化,以便以用户友好的方式对其进行格式化。我的意思是,按数千或类似的东西分组。这将是理想的:1 234 5677 890

php 中的 number_format 是我在拉丁数字上使用的。

有什么我不知道的功能可以使这成为可能吗?

如果没有,如何创建一个的想法是值得赞赏的。

谢谢

4

2 回答 2

0

你可以使用这样的正则表达式:

([۱۲۳۴۵۶۷۸۹۰])(?=(?:[۱۲۳۴۵۶۷۸۹۰]{3})+$)

\1,在字符串上搜索和替换۱۲۳۴۵۶۷۸۹۰会为您提供۱,۲۳۴,۵۶۷,۸۹۰(使用,而不是空格,因为 SO 会将它们修剪掉。但是在替换中使用空格也可以)。

不过,我必须同意评论中的建议,使用可用的数字类型存储数据并将它们转换为输入/输出。

于 2013-05-13T14:43:02.373 回答
0

如果您可以在数据库中存储数字而不是字符串(或转换为 ascii 数字),则可以使用 php5-intl 函数完成使用组分隔符的标准货币格式。您只需要 ISO 区域设置和货币代码:

$nf = new \NumberFormatter('fa_IR', \NumberFormatter::CURRENCY);
echo $nf->formatCurrency(1234.1234, 'IRR');

11234﷼</p>

否则,@rvalvik 的回答很好。

http://php.net/manual/en/class.numberformatter.php

于 2016-06-02T06:45:29.477 回答