2012-12-14 76 views
0

我想在php中替换整个单词。我发现下面 PHP string replace match whole wordphp中的整个单词替换

从链接代码我把下面的代码示例从上面的链接。

$text = preg_replace('/\bHello\b/', 'NEW', $text); 

但它不适合我。 我有这样

3 OR (2 AND CreatedDate = LAST_N_DAYS:2) OR 4 

字符串使用上述代码变得

3 OR (Name = 'LAST WEEK' AND CreatedDate = LAST_N_DAYS:Name = 'LAST WEEK') OR 4. 

2替换为替换2之后 “LAST_N_DAYS:2” 的字符串也。我想只替换2个。如果是任何单词,都不应该被替换。

回答

0

把新桃换2:

$text = preg_replace('/\s2\s/',' NEW ',$test); 
+0

谢谢,这是工作,但它正在取代额外的空间。例如,如果str ='这是仅2'。而我正在取代2 = 4,那么结果就像'这只是4'一样。实际上'2'正在取代。 – user1808669

+0

然后在替换字符串4后放一个空格,就像我用'NEW' – Tuim

+0

谢谢。它工作正常。 – user1808669

0

如果你只想要替换第一次出现再增加一个限制:

// pattern, replacement, string, limit 
$text = preg_replace('#2#U', 'NEW', $text, 1); 

或者你可以在下面使用:

$text = preg_replace('#2\s(AND)#', 'NEW $1', $text); 
+0

这取代了所有的发生2与新。在第二种情况下,只有第一种情况。用户希望用其他方式替换字符串中的任何独立2。 – Tuim

+0

好吧,我错了,然后:) – user969068

0

你可以简单使用

str_replace('2', "Name = 'LAST WEEK'", $string); 
+0

为什么在这里你使用正则表达式? –

+0

在这种情况下,所有2将被替换。例如$ str ='2和12'。如果我们替换2 = 4,那么输出将是'4和14'而不是'4和12'。 – user1808669

+0

只看此帖http://whats-online.info/science-and-tutorials/99/PHP-replace-the-whole-word-only-using-preg_replace-array/ –