将千位分隔符添加到任意数字,即使它包含特殊字符

时间:2015-10-12 06:33:36

标签: php regex number-formatting magento-1.9

我有一个挪威价格格式的网站,因此产品价格显示为1000,-

这是一个基于Magento的网站,版本为ce-1.9.2.1。

现在我想通过使用number_format函数或正则表达式来保持其格式,以保持其格式最好(例如1 000,-,{{} {我想要添加千位分隔符(最可能是空格但可以是任何字符) {1}}等。)。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

preg_replace中使用外观可以执行此操作:

$str = preg_replace('/\..*$(*SKIP)(*F)|(?<=\d)(?=(?:\d{3})+(?!\d))/', ' ', $str);

\..*$(*SKIP)(*F)会在DOT之后忽略/跳过部分转换。

RegEx Demo

答案 1 :(得分:0)

根据我对谷歌的5分钟研究,the formal currency format for Norwegian Krone#.###,##

此格式与您建议的格式之间的唯一区别是,Krone分隔符为“”而不是“.”,特殊值为“,00” “øre被替换为”,-“。

基于这种观察,我只需运行以下代码,给出正式定义中格式正确的值:

// expects "1.234,00" returns "1 234,-"
//     "1.234.567,00" ==> "1 234 567,-"
//              5,50  ==>          5,50
function kroneDisplayFormat($formalFormat) {
    $intermediate = str_replace(".", " "); // replace . separator with ' ' (space)
    if( endsWith( $intermediate, ",00")) {
       // special display case ",00" ==> ",-"
       $final = str_replace(",00", ",-");
    } else {
       $final = $intermediate
    }
    return $final
}