我想用: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;
答案 0 :(得分:5)
由于您在评论中提到,这是更具可扩展性,应该更容易。使用str_replace
和数组:
$array[':first_name'] = "Joe";
$array[':last_name'] = "Smith";
$body = str_replace(array_keys($array), $array, $body);
strtr
的另一种选择:
$body = strtr($body, $array);
答案 1 :(得分:0)
正则表达式::\w+
或:first_name
$first_name = "Joe";
$text = "Hi :first_name. Have a nice day :first_name!";
$text = preg_replace('/:(\w+)/', $first_name, $text);
print_r($text);
<强>输出强>:
Hi Joe. Have a nice day Joe!