2012-02-17 101 views
37

在PHP中,我有一個所有字符串的變量數組。一些存儲的值是帶逗號的數字字符串。PHP從數字字符串中刪除逗號

我需要什麼:

一種從字符串修剪逗號,只有做到這一點的數字串。這並不像看起來那麼直截了當。主要的原因是以下失敗:

$a = "1,435"; 

if(is_numeric($a)) 
    $a = str_replace(',', '', $a); 

失敗的原因$a = "1435"是數字。但$a = "1,435"不是數字。因爲我得到的一些字符串是帶逗號的常規句子,所以我無法在每個字符串上運行字符串替換。

+0

使用的preg_replace選擇性地取代由[0-9]兩邊括起的逗號? – Daan 2012-02-17 20:28:23

回答

20

沒有測試,但是大概就像if(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)

+0

是的,這有效。我嘗試了所有我期望的字符串格式,並且這可以工作。一旦網站允許我將標記爲接受的答案。 – user1082428 2012-02-17 20:32:13

+0

如果您想從包含單詞的字符串中的數字中刪除逗號,如果您希望避免刪除單詞中的逗號,請使用此模式:/ [0-9] + [,] + [0-9] +/ – Flaxious 2017-09-06 18:30:03

77

做它周圍的其他方法:

$a = "1,435"; 
$b = str_replace(',', '', $a); 

if(is_numeric($b)) { 
    $a = $b; 
} 
+0

謝謝對於答覆,這適用於我。 +1 – user1082428 2012-02-17 20:35:36

+1

每次調用'str_replace'的潛在開銷,但缺少任何正則表達式是一大優勢。 – KnightHawk 2016-01-12 19:43:31

2
function cleanData($a) { 

    if(is_numeric($a)) { 

    $a = preg_replace('/[^0-9,]/s', '', $a); 
    } 

    return $a; 

} 
+0

這也適用,+1 – user1082428 2012-02-17 20:36:03

8

最簡單的是:

$var = intval(preg_replace('/[^\d.]/', '', $var)); 

,或者如果您需要浮點:

$var = floatval(preg_replace('/[^\d.]/', '', $var)); 
+0

加1爲好一個班輪 – Niroshan 2017-09-26 06:08:50

0

試一下這個。這對我的工作

number_format(1235.369,2,'.','')

如果使用number_format這樣 number_format(1235.369,2)答案是1,235.37

,但如果你使用如下

number_format(1235.369,2,'.','')答案將是1235.37

它刪除了「1,235」的「,」。37"

0

如果你想刪除包含單詞串內從數字逗號,我認爲最簡單的方法是使用preg_replace_callback

例子:   

$str = "Hey hello, I've got 12,500 kudos for you, spend it well"

function cleannr($matches) 
{ 
    return str_replace("," , "" , $matches["nrs"]); 
} 

$str = preg_replace_callback ("/(?P<nrs>[0-9]+,[0-9]+)/" , "cleannr" , $str); 


輸出:

「餵你好,我有12500個榮譽給你,花得好」


在這種情況下,模式(正則表達式)不同於由於我們不想刪除其他逗號(標點符號),因此在接受的答案中給出了該答案。

如果我們想在這裏使用/[0-9,]+/代替/[0-9]+,[0-9]+/輸出將是:

「餵你好,我已經得到了12500個榮譽爲你花得好」

相關問題