За последние 24 часа нас посетили 16916 программистов и 1292 робота. Сейчас ищут 1424 программиста ...

preg_replace проблема

Тема в разделе "PHP для новичков", создана пользователем Dobby, 28 сен 2017.

  1. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте, помогите, пожалуйста, удалить в таком фрагменте слово "собака" с помощью регулярок

    Код (Text):
    1. <tag>корова собака бык</tag>
    чтобы результат выгладел так:

    Код (Text):
    1. tag>корова  бык</tag>
    Пробую так, но работает только если в тексте встречается искомое слово "собака", если искомого нет - возвращает ошибку почему-то...

    Код (Text):
    1. preg_replace('|(<tag>)(.*)(собака)(.*)(</tag>)|isU', "$1"."$2"."$4"."$5", $doc)
    И еще, как правильно удалить из данного фрагмента все буквы "о" и "б"?

    Был бы очень признателен за помощь!
     
  2. gruth

    gruth Активный пользователь

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    preg_replace('# <tag> [^<]* (собака) [^<]* </tag> #xui, '');
     
  3. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    вы вопрос видимо не прочитали до конца, удалить нужно не всю конструкцию, а определенное слово из нее
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Вопрос на миллион: нахрена тут регулярка? обычный str_replace справится на ура
     
  5. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    то, что нужно удалить - всегда разное

    т.е.

    Вопрос: Как удалить между определенными тегами (или между определенными символами) все случаи, когда встречается определенное слово(символ), но остальное должно остаться на месте

    В моем варианте все работает, только если искомое находится. Если искомого нет - ошибка.
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    И что?
    PHP:
    1. str_replace($_GET["replaceFrom"]. $_GET["replaceTo"], $_GET["text"]);
     
  7. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    можете адаптировать под мой случай или объяснить, что в моем варианте неверно??
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Если искомое не находится, то нету $5, поэтому и не работает.
    PHP:
    1.  str_replace("собака", "", "<tag>корова собака бык</tag>");
    А полностью вашу задачу я решать не буду
     
  9. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    потому что не сработает? еще раз повторяю текст разный всегда, а вы его указываете в явном виде тут tag>корова собака бык</tag>


    P.S. такой простой вопрос и никто не может подсказать что не работает в моем конкретном варианте, предлагают то, что не работает )
     
    #9 Dobby, 28 сен 2017
    Последнее редактирование: 28 сен 2017
  10. gruth

    gruth Активный пользователь

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    А ты вообще пробовал, или так, решил?
    Единственное это нужно экранировать "/"
     
  11. Dobby

    Dobby Новичок

    С нами с:
    28 сен 2017
    Сообщения:
    11
    Симпатии:
    0
    а ты пробовал или так решил что работает?

    Зачем ты отвечаешь в тему, если в ней не шаришь?
     
  12. gruth

    gruth Активный пользователь

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    Относительно