我有一大堆的字符串像這樣的:Howto preg_replace在括號內的特定字符?
test; test2 (2;5%).
我想現在用PHP做的是正確的「;」括號所以它看起來像:我試過
test; test2 (2,5%) - mention the ",".
代碼:
$string = preg_replace("/\(.;.\)/", ",", $string);
我的眼睛實際上是從谷歌上搜索這樣流血請幫我與:)
我有一大堆的字符串像這樣的:Howto preg_replace在括號內的特定字符?
test; test2 (2;5%).
我想現在用PHP做的是正確的「;」括號所以它看起來像:我試過
test; test2 (2,5%) - mention the ",".
代碼:
$string = preg_replace("/\(.;.\)/", ",", $string);
我的眼睛實際上是從谷歌上搜索這樣流血請幫我與:)
1)所需(\
)
2)未在表達式中包含百分號
3)將具有已與更換整個括號表達式(括號包括)一個單一的,
4)Zimzat評價所指出的,這可能是一個更好的主意與\d+
更換週期(.
) ,它匹配數字而不是任何字符。
$string = preg_replace("/\((\d+);(\d+%)\)/", "($1,$2)", $string);
你必須捕捉的人物旁邊;
:
$string = preg_replace('/\((\d+);(\d+%)\)/', "($1,$2)", $string);
更換如逗號(中多次出現),我將使用此代碼
$text = preg_replace_callback("/\{((.*),(.*))\}/sim", function($matches){
return str_replace(',', ':comma:', $matches[0]);
}, $text);
什麼使得。 a [^)]?怎麼說a +說多個號碼? – Zimzat 2011-03-07 21:43:56
是的,但我會建議使用以下內容,以便匹配任意長度的數字而不是隻有一個數字:'preg_replace(「/ \(([1-9] {1} [0-9] *), ([0-9] * [1-9] {1})%\)/「,」($ 1,$ 2)「,$ string);'這也將確保該數字沒有前導或尾隨0。 – 2011-03-07 21:49:31
@GigaWatt:「+」修飾符沒有得到那個嗎?我的意思是,'+'的意思是一個或多個 – elitalon 2011-03-07 21:53:29