0

假设我使用以下 php 函数:

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

我只能修改搜索和替换 var。是否可以进行以下替换:

test -> test test2

test 3 -> test3

我尝试了以下方法:

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

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

4

2 回答 2

2

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

所以,你可以试试:

$search = array('/test(\s?)$/','/test (?=*)/');
$replace = array('test test2','test($1)');
preg_replace($search, $replace, $str);
于 2012-12-11T09:00:34.757 回答
0

我认为对于您的任务,您不应该使用正则表达式。对于这种情况,您可以使用 str_replace 和两个数组 - 用于搜索和更改

$str = str_replace(array("test", "test 3"), array("test test2", "test3"), $str);
于 2012-12-11T09:02:40.683 回答