Замена всего слова в php

Я хочу заменить целое слово в php. Я нашел код по ссылке ниже заменить строку PHP на соответствие всему слову

Я взял пример кода ниже по ссылке выше.

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

но это не работает для меня. У меня есть строка, как

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

После замены 2 с использованием приведенного выше кода становится

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

2 также заменяет строку "LAST_N_DAYS:2". Хочу заменить только 2. Если это любое слово, его не следует заменять.


person user1808669    schedule 14.12.2012    source источник


Ответы (3)


Чтобы заменить 2 на NEW:

$text = preg_replace('/\s2\s/',' NEW ',$test);
person Tuim    schedule 14.12.2012
comment
Спасибо, это работает, но заменяет дополнительное пространство. например, если str = 'это только 2'. и я заменяю 2 = 4, тогда результат выглядит как «это только 4». на самом деле «2» заменяет. - person user1808669; 14.12.2012
comment
Затем поставьте пробел после 4 в строке замены, как я сделал с «NEW». - person Tuim; 14.12.2012

Если вы хотите заменить только первое вхождение, добавьте ограничение:

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

Или вы можете использовать ниже:

$text = preg_replace('#2\s(AND)#', 'NEW $1', $text);
person user969068    schedule 14.12.2012
comment
Это заменяет все вхождения 2 на NEW. А во втором случае только первые 2. Пользователь хочет заменить любые автономные 2 в строке на что-то другое. - person Tuim; 14.12.2012

вы можете просто использовать

str_replace('2', "Name = 'LAST WEEK'", $string);
person Igor Mancos    schedule 14.12.2012
comment
В этом случае все 2 будут заменены. например $str = '2 и 12'. если мы заменим 2 = 4, то на выходе будет «4 и 14», а не «4 и 12». - person user1808669; 14.12.2012