За последние 24 часа нас посетили 22375 программистов и 1149 роботов. Сейчас ищут 633 программиста ...

Вырезать первое предложение из многострочки

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

  1. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    как вырезать из текста все что после точки или запятой? Текст может быть многострочный. Нужно выбрать все до первой точки или запятой и привести его в одну строку.
    я в регулярках нуль
    хелп
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Welcome to Hell
    --- Добавлено ---
    Желательно открывать все и просматривать примеры.
    --- Добавлено ---
    Получишь Ачивку в карму
     
  3. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    угу, как обрезать строки знаем, только в разных кодировках оказывается просто знать чем обрезать строку мало, надо еще понимать что строковые функии работают совсем не так как ожидаешь... поэтому и пошел искать в регулярках
    --- Добавлено ---
    решил вот так, может есть более изящные варианты? ну и перенос строки тут не учтен
    Код (Text):
    1. $t = preg_split("/[\.|\,](.*)/m", $text);
    2.  
    3. echo $t[0]."<br />";
     
  4. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    пробовал
    Код (Text):
    1.  
    2. preg_replace('/[\,.].*/', '', $input_lines);
    но он почему то в примере на regex работает, а у меня на хосте делает не до точки, а до первой точки и все после второй точки оставляет, а между ними пусто. А должно быть пусто сразу после первой точки
     
  5. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    Заработалаа!!

    Код (Text):
    1.     $text = preg_replace('/\n/', '', $text);
    2.  
    3.     echo preg_replace('/[\,.].*/', '.', $text)."<br />";
    он почему то плохо реагирует на перевод каретки, когда все вывел в одну строку все заработало.

    За один заход такой вариант можно сделать, без двух preg_replace() подряд?
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Функции preg_replace не существует в разделе "работа над строкой", а значит ты не получишь ачивку и опыт.
     
    SibBear нравится это.
  7. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    Ну фсе, спать не буду теперь :(
    Я знаю строковые, функции, я же с них и начал. Не просто же так вопрос в теме про регулярки )))
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Подойди к зеркалу и скажи это в лицо.
     
    SibBear нравится это.