我们假设我使用以下php函数:
preg_replace($search, $replace, $str);
我只能修改搜索并替换var。是否可以进行以下替换:
test -> test test2
并且
test 3 -> test3
我尝试了以下内容:
$search = '/test (?=*)/';
$replace = 'test($1)';
这适用于第二种情况。但是现在我想使用if,为了说“如果$ 1是空的,添加test2。但是我只能修改搜索并替换var而不使用额外的php。这是否可以在正则表达式中使用?
答案 0 :(得分:2)
您可以将搜索和替换参数作为数组传递。因此,将一组搜索查询传递给search参数,并在replace参数...
中传递相应的替换字符串数组所以,您可以尝试:
$search = array('/test(\s?)$/','/test (?=*)/');
$replace = array('test test2','test($1)');
preg_replace($search, $replace, $str);
答案 1 :(得分:0)
我认为你的任务不应该使用正则表达式。对于这种情况,您可以使用str_replace和两个数组 - 用于搜索和更改
$str = str_replace(array("test", "test 3"), array("test test2", "test3"), $str);