Проблема с Preg_replace

Тема в разделе "PHP программирование", создана пользователем clayton, 21 янв 2011.

  1. clayton

    clayton Гость

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    "/value\s+/"
    меняйте на это, а к $new_val добавьте пробел, например.

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

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Preg_replace в данном задании использовать только для обучения, str_replace более логичен.
     
  4. clayton

    clayton Гость

    Вообще, я несовсем уточнил проблемц: слово обромлять могут не только пробелы, но еще и разнообразные символы, не входящие в слово(например: ":", ".", ",", "=" и прочее).
    Но проблему решил сам)), сделавши вывод что нужно всегда внимательно и до конца читать справки.
    Данный казус решается с помощью использования подмасок в preg_replace, вот так получилось:
    Код (PHP):
    $pattern = "/(\W{1})value(\W{1})/";
    $new_val = "\$1some_word\$2";
    $text = preg_replace($pattern, $new_val, $text);
    Подробности описаны Здесь
     
Загрузка...
Похожие Темы - Проблема Preg_replace
  1. c0de3r
    Ответов:
    4
    Просмотров:
    109
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    131
  3. SoulPaladin
    Ответов:
    3
    Просмотров:
    119
  4. Artael
    Ответов:
    1
    Просмотров:
    107
  5. ENSLER
    Ответов:
    0
    Просмотров:
    100

Поделиться этой страницей