PHP正则表达式替换括号和括号之间的文本

时间:2016-04-01 13:52:00

标签: php regex replace preg-replace

我有以下字符串:

Welcome [firstname] [lastname]

我正在尝试使用preg_replace(),以便将[first>]替换为 Marcello ,将[lastname]替换为 Silvestri

我只能找到将文本放在括号内的方法,但我想自己替换括号。

$string = "Welcome [firstname] [lastname]";

$patterns = array();
$patterns[0] = '\[firstname\]';
$patterns[1] = '\[lastname\]';

$replacements = array();
$replacements[0] = 'Marcello';
$replacements[1] = 'Silvestri';

echo preg_replace($patterns, $array, $string]);

我还尝试使用\[(.*?)\]尝试替换所有内容,无论方括号内容如何,​​但我得到类似[Marcello]的内容,而我只想要Marcello

如何替换包括方括号的内容?

3 个答案:

答案 0 :(得分:4)

你没有真的需要正则表达式,所以这里有一个简单的str_replace示例。

$string = "Welcome [firstname] [lastname]";

$find = [
    '[firstname]','[lastname]'
];
$replace = [
    'Marcellus','Wallace'
];

$modified = str_replace($find,$replace,$string);

print $modified;

将输出

Welcome Marcellus Wallace

答案 1 :(得分:3)

以下是您的模式。使用@solves你的问题。并在沙箱here

中查看
 $string = "Welcome [firstname] [lastname]";

$patterns = array();
$patterns[0] = '@\[firstname\]@';//this is what you need
$patterns[1] = '@\[lastname\]@';

$replacements = array();
$replacements[0] = 'Marcello';
$replacements[1] = 'Silvestri';

echo preg_replace($patterns, $replacements, $string);

答案 2 :(得分:1)

您可以使用str_replace()实现此目的。做了一个小测试,你可以看到下面的代码:

$string = "Welcome [firstname] [lastname]";
$patterns = array("Marcello", "Silvestri");
$replace = array("[firstname]", "[lastname]");

$result = str_replace($replace, $patterns , $string);

echo $result;

另见PHP str_replace()