Php preg_替换正则表达式(如有)

Php preg_替换正则表达式(如有),php,regex,Php,Regex,假设我使用以下php函数: preg_replace($search, $replace, $str); 我只能修改搜索和替换变量。是否可以执行以下替换: test -> test test2 及 我尝试了以下方法: $search = '/test (?=*)/'; $replace = 'test($1)'; 这适用于第二种情况。但是现在我想用if,来表示“如果$1为空,则添加test2。但我只能修改搜索并替换var,而不使用添加的php。这在正则表达式中可能吗 您可以将搜索和

假设我使用以下php函数:

 preg_replace($search, $replace, $str);
我只能修改搜索和替换变量。是否可以执行以下替换:

test -> test test2

我尝试了以下方法:

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

这适用于第二种情况。但是现在我想用if,来表示“如果$1为空,则添加test2。但我只能修改搜索并替换var,而不使用添加的php。这在正则表达式中可能吗

您可以将搜索和替换参数作为数组传递。因此,将搜索查询数组传递给搜索参数,并在替换参数中传递相应替换字符串数组

因此,您可以尝试:

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

我认为对于您的任务,您不应该使用regexp。对于这种情况,您可以使用str_replace和两个数组进行搜索和更改

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

$replace='test(${1}');第一个“测试”后是否有空格?第一个元素(“测试”)是否会阻止第二个元素工作?不符合规格!
$str = str_replace(array("test", "test 3"), array("test test2", "test3"), $str);