首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿拉伯/波斯语数字的Number_format

阿拉伯/波斯语数字的Number_format
EN

Stack Overflow用户
提问于 2013-05-13 14:16:52
回答 3查看 2.4K关注 0票数 3

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

数字示例:۱۲۳۴۵۶۷۸۹· //1234567890

我不知道如何格式化它,使它以一种用户友好的方式格式化。我的意思是,按数千个或类似的东西分组。这将是理想的:۱۲۳۴۵۶۷۸۹·

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

有什么我不知道的函数让这一切成为可能吗?

如果不是,如何创造一个人的想法是值得赞赏的。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-05-13 14:43:02

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

代码语言:javascript
复制
([۱۲۳۴۵۶۷۸۹۰])(?=(?:[۱۲۳۴۵۶۷۸۹۰]{3})+$)

在字符串\1,上搜索并替换۱۲۳۴۵۶۷۸۹۰将为您提供۱,۲۳۴,۵۶۷,۸۹۰ (使用,而不是空格,因为这样就可以减少它们)。但是,使用替换中的空间也同样有效)。

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

票数 0
EN

Stack Overflow用户

发布于 2016-06-02 06:45:29

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

代码语言:javascript
复制
$nf = new \NumberFormatter('fa_IR', \NumberFormatter::CURRENCY);
echo $nf->formatCurrency(1234.1234, 'IRR');

۱٬۲۳۴和﷼

否则,@rvalvik的答案是好的。

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

票数 0
EN

Stack Overflow用户

发布于 2022-07-30 22:24:45

与@rvalvik的regex模式相比,编写得更优雅,您可以在一个字符后面添加一个逗号,后面跟着3、6、9等字符。

代码:(演示)

代码语言:javascript
复制
$str = '۱۲۳۴۵۶۷۸۹۰';

var_export(
    preg_replace(
        '~.\K(?=(?:.{3})+$)~u',
        ",",
        $str
    )
);

输出:

代码语言:javascript
复制
'۱,۲۳۴,۵۶۷,۸۹۰'

下面是一个相关问题的相似答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16524286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档