2014-04-30 124 views
0

所有我想要的是轉變「1.234,56」「1,234.56」 ...多字符串替換

我讀到關於使用陣列(S)爲str_replace函數的參數,所以我做了這個:

$value = '1.234,56'; 
$replacer1 = ','; 
$replacer2 = '.'; 
echo \str_replace(array($replacer1, $replacer2), array($replacer2,$replacer1), $value); 
//Prints '1,234,56' instead of '1,234.56' 

輸入和它的替換是可變的,它不一定只能用於數字。

任何想法?謝謝...

+0

唯一的字符串有價格\數字格式指定哪個你應該檢查出第一 –

+0

功能本讀起來很像一個[XY問題(HTTP://元.stackexchange.com/A/66378)。你想要達到什麼目的,只需將一個特定角色的出現與另一個角色交換? –

+0

是的,亞歷克斯,多數民衆贊成正是我想要的,沒有使用第三個變量或輔助替代 – CarlosCarucce

回答

1

儘量this.i使用number_format()

<?php 

$number = "1.234,56"; 

$number = str_replace(array('.',','), array('','.'), $number); 

echo number_format($number, 2, '.', ','); 

您還可以使用money_format() function.Note,它不會在Windows上運行。

這裏是另一種方法。

<?php 

$str = "1.234,56"; 

$rp1 = '.'; 
$rp2 = ','; 

//you might want to create a function for this. 
if(false===strpos($str, '@')){ 

$str = str_replace($rp1, '@', $str); 
$str = str_replace($rp2, $rp1, $str); 
$str = str_replace('@', $rp2, $str); 

} 

echo $str; 

您也可以使用像#!MYSEP!#

+0

有沒有辦法保證'@'替代品不存在於$ str? – CarlosCarucce