Получить содержимое из строки пропуская содержимое в скобках, как?

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

  1. NOIP

    NOIP

    Регистр.:
    17 фев 2008
    Сообщения:
    265
    Симпатии:
    56
    Доброго времени суток, есть код
    PHP:
    <?
    $string="какой-то текст (бидон-15) продолжение какого то текста....";
    preg_match('/\((.+?)\)/i'$string$matchesPREG_OFFSET_CAPTURE);
    //print_r($matches);
    print $matches[1][0];
    ?> 
    Достает содержимое в скобках, а как получить содержимое string без содержимого в скобках? что бы в конце получилось так
     
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    663
    Симпатии:
    516
    PHP:
    $string=preg_replace('/\((.+?)\)/i',''$string);
     
    NOIP и javx нравится это.
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.596
    Симпатии:
    1.508
    Хорошо, только вложенные скобки или смайлики сломают:
    PHP:
    $string="какой-то текст (бидон :) -15) продолжение (какого то) текста....";
    $string=preg_replace('/\((.+?)\)/i',''$string);
    var_dump(    $string    );
    И просто убрать "?" увеличивая жадность квантификаторов не получится - тогда будет удалятся больше чем надо.
     
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    663
    Симпатии:
    516
    Да, согласен, но я минимальный рабочий вариант предоставил, учитывая задачу. Можно конечно более универсальное решение придумать, но как минимум неясно нужно ли оно или предоставленного варианта хватит :)
     
  5. kreg1g

    kreg1g Писатель

    Регистр.:
    6 июн 2012
    Сообщения:
    6
    Симпатии:
    2
    Код:
    $re = '/(.+)\((.+)\)(.+)/i';
    $str = 'какой-то текст (бидон ;) -15) продолжение какого то текста....';
    preg_match($re, $str, $matches);
    echo $matches[1].$matches[3];