2012-12-11 40 views
0

假設我用下面的PHP函數:的preg_replace正則表達式的if else

preg_replace($search, $replace, $str); 

我只能修改搜索和替換變種。是否有可能做如下替換:

test -> test test2 

而且

test 3 -> test3 

我試過如下:

$search = '/test (?=*)/'; 
$replace = 'test($1)'; 

這適用於第二種情況。但現在我想使用一個if,爲了說「如果$ 1是空的,添加test2。但是我只能修改搜索並替換var而不使用另外的php。這在正則表達式中甚至可能嗎?

+0

$ replace ='test($ {1})'; –

+0

第一次「測試」後是否有空格? –

回答

2

你可以通過搜索和替換參數數組所以通過搜索查詢的數組的搜索參數,以及相應的陣列替換替換參數字符串...

所以,你可以嘗試:

$search = array('/test(\s?)$/','/test (?=*)/'); 
$replace = array('test test2','test($1)'); 
preg_replace($search, $replace, $str); 
0

我認爲你的任務你不應該使用正則表達式。對於這種情況,你可以使用str_replace和兩個數組 - 用於搜索和更改

$str = str_replace(array("test", "test 3"), array("test test2", "test3"), $str); 
+0

第一個元素(「測試」)不會阻止第二個元素的工作嗎?不要規格! – webaware