Замена слов

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 5 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    747
    Симпатии:
    226
    Здравствуйте.
    Имеем текст:
    PHP:
    $text="Rock-and-Roll is the best style. I dislike Rock .That's all.
    Подскажите, как заменить слово Rock на Rap, но при этом Rock-and-Roll оставить не изменным.
    P.S.
    Текст взят для примера.
    Вопрос в том, как заменять слова, но при этом не трогать те части слов, содержащие такую часть, которую мы меняем.
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    $text="Rock-and-Roll is the best style. I dislike Rock .That's all.";
    $text preg_replace("/rock /i","Rap ",$text);
    echo 
    $text;
     
    LEXAlForpostl нравится это.
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    747
    Симпатии:
    226
    Ещё вопрос.
    Если в тексте слово word встречается 15 раз.
    Мне надо рандомно от 5-8 раз заменить его на word2, как это реализовать?
     
  4. Freeborn

    Freeborn Постоялец

    Регистр.:
    31 окт 2008
    Сообщения:
    62
    Симпатии:
    21
    PHP:
    preg_replace("/rock /i","Rap "$textrand(58));
     
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Freeborn

    Такой метод заменит разное количество, но от начала текста. То есть не получится так - первое меняем, второе нет, третье меняем.
     
  6. qwyjibo

    qwyjibo Постоялец

    Регистр.:
    27 янв 2009
    Сообщения:
    64
    Симпатии:
    12
    Для поиска отдельного слова хорошо использовать маску \bслово\b, где \b означает границу слова.
    Вариант Saen cловит тебе кусок слова brock, например, и получится brap.
     
  7. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    А сама замена только одна? Тогда можно разбить строку на массив подстрок, разделителем которых будет строка поиска, а потом при склейке рандомно заменить на новые слова.
     
Статус темы:
Закрыта.