PHP 正则表达式:如何替换所有以冒号开头的单词?
PHP Regex: How do I replace all occurrences of a word starting with a colon?
我想用 $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;
正则表达式::\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!
既然你在评论中提出了这个问题,那么它的可扩展性更强,应该更容易。使用 str_replace
和数组:
$array[':first_name'] = "Joe";
$array[':last_name'] = "Smith";
$body = str_replace(array_keys($array), $array, $body);
strtr
的另一种选择:
$body = strtr($body, $array);
我想用 $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;
正则表达式::\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!
既然你在评论中提出了这个问题,那么它的可扩展性更强,应该更容易。使用 str_replace
和数组:
$array[':first_name'] = "Joe";
$array[':last_name'] = "Smith";
$body = str_replace(array_keys($array), $array, $body);
strtr
的另一种选择:
$body = strtr($body, $array);