помогите удалить из "x дн. назад"

Тема в разделе "Регулярные выражения", создана пользователем ufaclub, 26 дек 2012.

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

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    395
    Симпатии:
    17
    есть переменная

    $snip="2 дн. назад .текст...."

    где за место 2ки может быть любое число от 1 до 100

    как удалять "x дн. назад" и оставить только .текст....
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    /\d+ дн\. назад\s+/g
    найденное заменить на пустую строку
     
  3. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    395
    Симпатии:
    17
    а как это оформить?

    $text ="2 дн. назад было ....";
    $text = str_replace("/\d+ дн\. назад\s+/g",'',$text);

    так чего то не работает...
     
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    это ж регулярка, $text = preg_replace("/\d+ дн\. назад\s+/",'',$text);
     
  5. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Я думал вам нужна регулярка для notepad.
    На пыхе вроде вот так:
    PHP:
    $text preg_replace("/\\d+ дн\\. назад\\s+/u"""$text);
    Модификатор g (global) в php не нужен, из регулярки убран.
    Но нужен модификатор u чтобы пых понял символы utf-8, в регулярку добавлен.
     
    ufaclub нравится это.
  6. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    395
    Симпатии:
    17
    а как удалить все что после знака |
     
  7. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    PHP:
    $text preg_replace("/\\|.*$/"""$text);
     
    ufaclub нравится это.
  8. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    395
    Симпатии:
    17
    спасибо большое! и последний вроде вопрос.

    как удалить из строки

    30 окт 2012

    т.е 30 меняется от 1 до 31

    окт - всегда 3 буквы

    ну и год от 200* до 201*
     
  9. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Не могу быть уверен, но навскидку:
    PHP:
    $text preg_replace("/\\d{1,2} [а-я]{3} 20\\d{2}/u"""$text);
    Даже придумал как будет нагляднее:
    PHP:
    $text preg_replace("/[1-3]?[0-9] [а-я]{3} 20[0-1][0-9]/u"""$text);
     
Статус темы:
Закрыта.