За последние 24 часа нас посетил 7991 программист и 447 роботов. Сейчас ищут 147 программистов ...

Регулярное выражение php для замены слов и фраз целиком

Тема в разделе "Регулярные выражения", создана пользователем LSA, 12 авг 2017 в 19:50.

  1. LSA

    LSA Новичок

    С нами с:
    Суббота
    Сообщения:
    5
    Симпатии:
    0
    Добрый день. Сейчас пытаюсь составить регулярное выражение php для замены слов и фраз целиком с помощью preg_replace('/регулярка/i', '{%fraza%}', $a).
    Пробовал сделать сам - дня три в пустую, в интернете также ничего подобного не нашел.
    Что нужно: регулярка должна заменять слово или фразу целиком,
    например есть стока: кофе мокофе кофе. прокофе кофе
    после замены "кофе": {%slovo%} мокофе {%slovo%}. прокофе {%fraza%}
    например есть стока: кофе латте маккофе латте кофе латтес кофе латте!
    после замены "кофе латте": {%fraza%} маккофе латте кофе латтес {%fraza%}!
    Тоесть заменяет только если искомое слово или сочетание слов совпадает и является отдельным словом / словосочетанием, а не частью слова как маккофе или маккофе латте
    Использовал этот сервис для проверки - http://regexr.com/, ниже то что получилось, но данные регулярки заменяют вместе с пробелом или другим символом слева. Помогите правильно написать регулярку.
    (?:^|[^а-я])(кофе)(|[^а-я])
    (?:^|[^а-яa-zA-ZА-ЯіІїЇєЄ])(кофе)(|[^а-яa-zA-ZА-ЯіІїЇєЄ])
    Заранее всем благодарен за любую помощь!
     
  2. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    217
    Симпатии:
    40
    preg_replace('/\bкофе\b/i', '{%slovo%}', $a).
     
    #2 Познающий php, 12 авг 2017 в 21:03
    Последнее редактирование: 12 авг 2017 в 21:13
  3. LSA

    LSA Новичок

    С нами с:
    Суббота
    Сообщения:
    5
    Симпатии:
    0
    Это одно из первых решений, которые я находил в интернете, но к сожалению у меня данная конструкция не работает, ума не приложу по какой причине, вроде и в инструкции прописано что граница слова, но не заменяет.
    Даже вынес в отдельный файл, мало ли, где-то ошибка, но даже так не заменяет:
    Код (Text):
    1. echo preg_replace('/\bкофе\b/i', '{%slovo%}', 'кофе мокофе кофе. прокофе кофе');
     
  4. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    217
    Симпатии:
    40
    Потому что модификатор u не поставил

    preg_replace('/\bкофе\b/iu', '{%slovo%}', $a).
     
    LSA нравится это.
  5. LSA

    LSA Новичок

    С нами с:
    Суббота
    Сообщения:
    5
    Симпатии:
    0
    Как оказалось все просто. Спасибо большое, помогло! Как я понимаю не работало из за кодировки UTF-8? Подскажите для чего нужен данный модификатор, а то в интернете как-то непонятно описано.
     
  6. denis01

    denis01 Старожил
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    11.238
    Симпатии:
    1.506
    Адрес:
    Молдова, г.Кишинёв
  7. LSA

    LSA Новичок

    С нами с:
    Суббота
    Сообщения:
    5
    Симпатии:
    0
  8. Алекс8

    Алекс8 Новичок

    С нами с:
    18 май 2017
    Сообщения:
    602
    Симпатии:
    135
    я дико извиняюсь) а что это за синтаксис такой?)) куда его?) что то для каких то шаблонов?
     
  9. denis01

    denis01 Старожил
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    11.238
    Симпатии:
    1.506
    Адрес:
    Молдова, г.Кишинёв
    сами придумали и просто заменяют его
     
    Алекс8 нравится это.