Проблема с 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
34
#2
"/value\s+/"
меняйте на это, а к $new_val добавьте пробел, например.

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

acorn

PHP Developer
29.08.2004
585
3
#3
Preg_replace в данном задании использовать только для обучения, str_replace более логичен.
 
C

clayton

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