Проблема с Preg_replace

  • Автор темы clayton
  • Дата начала
C

clayton

Гость
#1
Здравствуйте уважаемые форумчане, имеется вопрос такого характера: есть тектовый файл, в котором необходимо заменить 1-но слово на другое, например:
PHP:
$pattern = "/value/";
$new_val = "some_word";
$text = preg_replace($pattern, $new_val, $text);
Проблема заключается в том, что могут удалиться лишние слова, содержахие в себе данное слово, например: "values", "manyvalue" и прочее. Регулярное выражение типа :
PHP:
"/\s+value\s+/"
удаляет вокруг слова пробелы, что не приемлево.
Как можно решить эту проблему, возможно с помощью какого-нибудь специального регулярного выражения или какой-нибудь особености функции preg_replace?
 

vital

Больной Компом Детектед
29.01.2006
2 432
40
codeby.net
#2
"/value\s+/"
меняйте на это, а к $new_val добавьте пробел, например.

Еще, в ашем случае я бы юзал strpos() str_replace() и т.п.
Ну или юзайте Preg_replace_callback()
и колбеке уже разбирайте, надо менять или нет..
 
C

clayton

Гость
#4
Вообще, я несовсем уточнил проблемц: слово обромлять могут не только пробелы, но еще и разнообразные символы, не входящие в слово(например: ":", ".", ",", "=" и прочее).
Но проблему решил сам)), сделавши вывод что нужно всегда внимательно и до конца читать справки.
Данный казус решается с помощью использования подмасок в preg_replace, вот так получилось:
PHP:
$pattern = "/(\W{1})value(\W{1})/";
$new_val = "\$1some_word\$2";
$text = preg_replace($pattern, $new_val, $text);
Подробности описаны Здесь