PHP正则表达式:如何替换以冒号开头的所有单词出现?

alt*_*ids 1 php regex preg-replace

我想替换变量中的所有:first_name事件$body,$first_name但我坚持使用正则表达式部分.正则表达式不起作用.当我回复身体时,原始字符串被打印出来.什么是正确的正则表达式?

$first_name = "Joe";
$body = "Hi :first_name. Have a nice day :first_name!";
$regex = "/\b:first_name\b/";
$body = preg_replace($regex, $first_name, $body);
echo $body;
Run Code Online (Sandbox Code Playgroud)

Abr*_*ver 5

由于您在评论中询问,这是更具可扩展性,应该更容易.使用str_replace和数组:

$array[':first_name'] = "Joe";
$array[':last_name'] = "Smith";

$body = str_replace(array_keys($array), $array, $body);
Run Code Online (Sandbox Code Playgroud)

另一种选择strtr:

$body = strtr($body, $array);
Run Code Online (Sandbox Code Playgroud)