Удаление из строки не нужного

Тема в разделе "Регулярные выражения", создана пользователем flat73, 17 мар 2011.

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

    flat73 Постоялец

    Регистр.:
    15 авг 2008
    Сообщения:
    55
    Симпатии:
    2
    есть текст
    S (+ 4 in stock)
    M (+ 2 in stock)
    L (+ 3 in stock)

    у меня стоит вот такой код который уберает из этой строчки (+ 4 in stock)

    preg_match_all('/(\w+) \(\+ \d+ in stock\)/is', $content, $m, PREG_PATTERN_ORDER);

    Работает все отлично.
    Но когда текст немного меняется:

    S (only 4 in stock)
    M (+ 2 in stock)
    L (only 3 in stock)

    То перестает работать, так вот вопрос как сделать так чтобы работало и с + и с only?
     
  2. denover

    denover Постоялец

    Регистр.:
    5 июн 2008
    Сообщения:
    56
    Симпатии:
    7
    попробуй так:
    preg_match_all('/(\w+) \([\+|only] \d+ in stock\)/is', $content, $m, PREG_PATTERN_ORDER);
     
  3. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    PHP:
    preg_match_all('/(\w+) \(.+\)/is'$content$mPREG_PATTERN_ORDER); 
    Пофигу ведь что в скобках...

    Добавлено через 3 минуты
    Да и preg_replace можно сразу использовать...
     
  4. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    Выбирайте:
    PHP:
    preg_match_all('/(\w+) \(/is'$content$mPREG_PATTERN_ORDER);
    preg_match_all('/(\w+) \((?:only|\+) \d+ in stock\)/is'$content$mPREG_PATTERN_ORDER);   
    $m preg_replace ('/(\w+) \((?:only|\+) \d+ in stock\)/is''$1',$content);
    $m preg_replace ('/(\w+) \(.*?\)/is''$1',$content);
     
Статус темы:
Закрыта.