2011-05-03 67 views
1

如何在php中使用preg_replace替換(($ 24.39))爲24.39?

+7

爲什麼不直接使用str_replace?該模式是(($'和'))',我沒有理由使用正則表達式。 – 2011-05-03 11:41:46

+0

我同意邁克爾。在這種情況下,使用str_replace會很好。 – Nobita 2011-05-03 11:42:48

回答

2

如果你有一個大的字符串多次出現,並希望以取代那些只在該模式......

$str = preg_replace('/\(\((\$\d+\.\d+)\)\)/', '$1', $str); 

CodePad

如果您想使小數可選,您可以將\.\d+更改爲(?:\.\d+)?

2

你可以嘗試:

$str = "(($24.39))"; 
$str = preg_replace('/[^\.\d]/',"",$str); 
echo $str; 
+0

會同意Michael和Niobita - 如果這是一致的模式。 str_replace更高效... – 2011-05-03 11:46:07

+0

謝謝ToonMariner ... – Nirav 2011-05-03 11:51:16

5

代替preg_replacestr_replace你也可以使用filter_var

echo filter_var(
    '(($24.39))', 
    FILTER_SANITIZE_NUMBER_FLOAT, 
    FILTER_FLAG_ALLOW_FRACTION 
); // 24.39 

demo on codepad

相關但不適合作爲您指定的字符串的解決方案:PHP: unformat money

+0

有趣... +1 – alex 2011-05-03 11:55:03

1

正則表達式是昂貴的。使用方法:

$str = '(($24.39))'; 
$str = str_replace('(($', '', $str); 
$str = str_replace('))', '', $str);