我在 mysql 数据库中有一个“价格”字段,其中包含阿拉伯或波斯数字的产品价格。
数字示例:123455677890 //1234567890
我无法弄清楚如何对其进行格式化,以便以用户友好的方式对其进行格式化。我的意思是,按数千或类似的东西分组。这将是理想的:1 234 5677 890
php 中的 number_format 是我在拉丁数字上使用的。
有什么我不知道的功能可以使这成为可能吗?
如果没有,如何创建一个的想法是值得赞赏的。
谢谢
我在 mysql 数据库中有一个“价格”字段,其中包含阿拉伯或波斯数字的产品价格。
数字示例:123455677890 //1234567890
我无法弄清楚如何对其进行格式化,以便以用户友好的方式对其进行格式化。我的意思是,按数千或类似的东西分组。这将是理想的:1 234 5677 890
php 中的 number_format 是我在拉丁数字上使用的。
有什么我不知道的功能可以使这成为可能吗?
如果没有,如何创建一个的想法是值得赞赏的。
谢谢
你可以使用这样的正则表达式:
([۱۲۳۴۵۶۷۸۹۰])(?=(?:[۱۲۳۴۵۶۷۸۹۰]{3})+$)
\1,
在字符串上搜索和替换۱۲۳۴۵۶۷۸۹۰
会为您提供۱,۲۳۴,۵۶۷,۸۹۰
(使用,
而不是空格,因为 SO 会将它们修剪掉。但是在替换中使用空格也可以)。
不过,我必须同意评论中的建议,使用可用的数字类型存储数据并将它们转换为输入/输出。
如果您可以在数据库中存储数字而不是字符串(或转换为 ascii 数字),则可以使用 php5-intl 函数完成使用组分隔符的标准货币格式。您只需要 ISO 区域设置和货币代码:
$nf = new \NumberFormatter('fa_IR', \NumberFormatter::CURRENCY);
echo $nf->formatCurrency(1234.1234, 'IRR');
11234﷼</p>
否则,@rvalvik 的回答很好。