1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Проблема с Preg_replace

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

  1. clayton

    clayton Гость

    Репутация:
    0
    Здравствуйте уважаемые форумчане, имеется вопрос такого характера: есть тектовый файл, в котором необходимо заменить 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 Больной Компом Детектед

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

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

    acorn PHP Developer

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

    clayton Гость

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

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