2

我有一个具有此值的字符串:

$myValue = "1.099,90";

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

$myNewValue = "1,099.90";

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

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

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

4

2 回答 2

4

strtr()不更换替换件,因此您可以避免临时管道。

代码:(演示

$myValue = "7.891.099,90";
echo strtr($myValue, ".,", ",.");

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

输出:

7,891,099.90

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

于 2018-10-12T03:53:30.270 回答
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;
?>
于 2018-10-12T03:33:04.640 回答