【问题标题】:How to replace commas with dots and vice versa如何用点替换逗号,反之亦然
【发布时间】:2019-03-17 05:13:59
【问题描述】:

我有一个带有这个值的字符串:

$myValue = "1.099,90";

我想用点替换逗号,反之亦然。就像这样:

$myNewValue = "1,099.90";

我知道必须有其他更好的方法来做到这一点,但我能得到的只是:

$myNewValue = str_replace(",","|",$myValue);
$myNewValue = str_replace(".",",",$myValue);
$myNewValue = str_replace("|",".",$myValue);

这种方式看起来很奇怪,而且有一股难闻的气味!有没有更清洁的方法?

【问题讨论】:

    标签: php replace currency-formatting digit-separator


    【解决方案1】:

    这将完成工作,但您当然也可以使用 preg_replace 提出不同的方法。

    <?php
    $myValue = '1.099,90';
    $parts = explode(".", $myValue); // break up the (.)periods
    $num = count($parts); // number of parts
    for($loop = 0; $loop < $num; $loop++){ // cycle through each part
        if(strpos($parts[$loop], ",") !== false){ // if this includes (,)comma - swap it
            $parts[$loop] = str_replace(",", ".", $parts[$loop]);
        }
        if($loop !== ($num - 1)){ // if this is not the last loop iteration..add comma after (replace period)
            $myNewValue .= $parts[$loop] . ","; 
        } else {
            $myNewValue .= $parts[$loop]; // last loop iteration, no comma at end
        }
    }
    
    echo $myNewValue;
    

    您也可以使用 str_replace w/ extra |符号(或任何东西)...

    <?php
    $myValue = '1.099,90';
    $replace = array(",", ".", "|");
    $with = array("|", ",", ".");
    $myNewValue = str_replace($replace, $with, $myValue);
    echo $myNewValue;
    ?>
    

    【讨论】:

      【解决方案2】:

      strtr() 不替代替代品,因此您可以避免临时管道。

      代码:(Demo)

      $myValue = "7.891.099,90";
      echo strtr($myValue, ".,", ",.");
      
      // or
      // echo strtr($myValue, ["." => ",", "," => "."]);
      

      输出:

      7,891,099.90
      

      资源:http://php.net/manual/en/function.strtr.php

      【讨论】:

        猜你喜欢
        • 2020-07-24
        • 2021-09-30
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-05
        • 2018-07-06
        相关资源
        最近更新 更多