Обрезать строку до третьей запятой!

Тема в разделе "Регулярные выражения", создана пользователем mr-graffity, 24 мар 2013.

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

    mr-graffity

    Регистр.:
    29 июл 2010
    Сообщения:
    163
    Симпатии:
    38
    Есть код
    <?php
    // входная строка
    $str = 'пассажирский самолет, авиакомпания, закат, красное небо, перистые облака, след от двигателей, взлет, удачного полета';
    preg_match("/^(.+?,){3}/",$str,$m);
    echo $str = trim($m[0],','); // пассажирский самолет, авиакомпания, закат
    ?>
    Как сделать чтоб текст обрезался до третьей запятой?
    т.е. чтоб осталось "красное небо, перистые облака, след от двигателей, взлет, удачного полет"
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Для utf-8 данных
    PHP:
    echo preg_replace("/^(.+?,){3}/u"'' ,$str);
    Для вин1251
    PHP:
    echo preg_replace("/^(.+?,){3}/"'' ,$str);
    p.s. Хотелось бы узнать как регуляркой preg_replace оставить первые три элемента без запятой. Так и не придумал.
     
    poikl нравится это.
  3. mr-graffity

    mr-graffity

    Регистр.:
    29 июл 2010
    Сообщения:
    163
    Симпатии:
    38
    во как получилось в два вырожения
    <?php
    // входная строка
    $str = 'пассажирский 342 самолет, авиакомпания, закат, красное небо, перистые облака, след от двигателей, взлет, удачного полета';
    preg_match("|(.*?\s){3}(.*)|i",$str,$m);
    print_r($m);
    echo "<br>";
    preg_match("/(.*?\s){2}/",$m[2],$m);

    print_r($m);
    ?>
     
  4. Mich

    Mich Создатель

    Регистр.:
    24 фев 2013
    Сообщения:
    13
    Симпатии:
    7
    А не проще разбивать по запятым в массив, а потом брать первые четыре элемента, это будет быстрее работать
    PHP:
    implode(', 'array_slice(explode(', '$str), 04))
     
  5. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    Это будет быстрее работать только если текст не большой. Да и вопрос не в быстроте решения, так что давайте всё таки в разделе по регуляркам давать советы именно по использованию регулярных выражений.
     
Статус темы:
Закрыта.