2015-04-02 24 views
2

我需要能夠將一個字符串像這樣更換所有非數字字符:98 $#$$ 221 99使用單個字符

進入這個:98-221-99

我的代碼使用下面的代替所有非數字字符,但它會單獨替換它們。我需要它只用一個連字符替換它。

這裏是我使用的代碼:

$number = '82#$991'; 
$number = preg_replace("/[^0-9]/", " ", $number); 
$number = str_replace(" ", "-", $number); 

的這個輸出是:82--991

我需要它是:82-991

有什麼如何做到這一點?

回答

3

而不是在preg_replace()之後致電str_replace(),您可以使用quantifier。所述+量詞告訴正則表達式引擎,以匹配前面的標記「一個或多個」次。

$number = '98$#221$$99'; 
$number = preg_replace('/[^0-9]+/', '-', $number); 
echo $number; //=> "98-221-99" 
+0

謝謝,那真是棒極了! – 2015-04-02 03:21:34

相關問題