似乎与Preg_replace匹配Exact字符串

时间:2015-09-16 22:38:27

标签: php regex preg-replace

我试图使用php中的preg_replace函数完全匹配字符串。 我只想匹配具有单个“@”符号的实例。 我还要求将一个变量作为模式传入。

$x = "@hello, @@hello, @hello, @@hello"
$temp = '@hello'

$x = preg_replace("/".$temp."/", "replaced", $x);

结果应该是:

$x = "replaced, @@hello, replaced, @@hello"

提前谢谢。

1 个答案:

答案 0 :(得分:4)

如果(?<!@)前面有$temp,则添加一个匹配失败的look-behind @(或者,如果有{{1}在} @之前,不匹配):

@hello

请参阅IDEONE demo

这是a regex demo

另外,如果最后有整个单词边界,请将$x = "@hello, @@hello, @hello, @@hello"; $temp = '@hello'; $x = preg_replace("/(?<!@)".$temp."/", "replaced", $x); echo $x; 附加到模式的末尾,以确保不替换\b

@helloween