Number_format为阿拉伯语/波斯语数字

时间:2013-05-13 14:16:52

标签: php mysql regex formatting

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

电话号码示例:1234567890 // 1234567890

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

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

是否有任何我不知道的功能,以实现这一目标?

如果没有,我们很感激如何制作一个想法。

由于

2 个答案:

答案 0 :(得分:0)

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

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

\1,字符串上使用۱۲۳۴۵۶۷۸۹۰进行搜索和替换会为您۱,۲۳۴,۵۶۷,۸۹۰(使用,而不是空格,因为SO会将其删除。但是在替换中使用空格相反也会起作用。)

我不得不同意评论中的建议,但是使用可用的数字类型存储数据并在输入/输出上转换它们。

答案 1 :(得分:0)

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

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

1,234﷼

否则,@ rvalvik的回答很好。

请参阅http://php.net/manual/en/class.numberformatter.php