2017-01-16 61 views
1

$reg1 = preg_replace('/(?<!\d),(?=\s+\d)/', '', $text); $reg2 = preg_replace('/,\s*$/', '', $reg1); $reg3 = preg_replace('/\s\s+/', ' ', $reg2);將多個正則表達式爲一個逗號去除

我有這三個正則表達式替換調用。我可以將它們合併爲一個嗎? 第一個在字符串之後和數字之前刪除逗號。 第二個在最後刪除逗號。 第三個修剪空白。

+0

請添加一些示例輸入字符串和預期結果。 – Toto

+0

您是否需要將它們合併在一起?表現痛苦?爲了簡化第二個正則表達式,你可以試試'rtrim($ reg1,',');'。我無法很好地讀取正則表達式,但第三個可以使用'trim($ reg2);'。如果一個字符串看起來像這樣,你需要發生什麼',一個令人驚訝的字符串會讓你的第10天搞砸,'? – MonkeyZeus

+0

''hulk,33,'=>'hulk 33'' ''test 3','=>'test 3' –

回答

0

你可以通過所有三preg_replace

$patterns = array('/(?<!\d),(?=\s+\d)/', '/,\s*$/', '/\s\s+/'); 
$replacements = array('', '', ' '); 

$result = preg_replace($patterns, $replacements, $text); 
2

前兩個可以等組合:

​​
1

由於不同的替換值,你只能組你的第2正則表達式與一個「或」條件。 preg_replace也允許多個替換,所以你可以傳遞第三個正則表達式作爲單獨的參數。

$result = preg_replace(array('/((?<!\d),(?=\s+\d))|(,\s*$)/', '(\s\s+)'), array('', ' '), $text);