Помогите с регуляркой

Тема в разделе "Обо всём", создана пользователем zema50, 11 мар 2021.

  1. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    840
    Симпатии:
    94
    добрый день, подскажите регулярное выражение - обрезать все что идет после определенного количества определенного символа, к примеру обрезать все что идет после третьей запятой и саму запятую или после последней запятой и саму запятую, или к примеру вместо запятой пробелы.
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.883
    Симпатии:
    1.065
    Что то много или :) Не очень понятна задача, как бы нужны примеры.
     
  3. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    840
    Симпатии:
    94
    ну к примеру идет перечисление и нужно обрезать после 3 запятой
    асер, монитор, 17, колонки, китай и т.д.
    надо что бы осталось
    асер, монитор, 17

    и второй пример, нужно обрезать после последнего пробела

    диван престиж раскладной 90х180
    надо что бы осталось
    диван престиж раскладной
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.883
    Симпатии:
    1.065
    Регулярка тут не нужна. Переводим в массив и оставляем нужные элементы массива.
     
  5. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    840
    Симпатии:
    94
    не знаю что вы имеете ввиду, но если через explode то
    1. не хочется городить портянку
    2. по второму варианту количество слов может быть разным.
    нашел для второго варианта регулярку
    preg_replace('=\s\S+$=', '',$str);
    коротко и красиво )
     
  6. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    не такая уж и портянка
    PHP:
        $str "диван престиж раскладной 90х180";
        
    $str_arr explode(' '$str);
        
    array_pop($str_arr);
        echo 
    implode(' '$str_arr);
     
  7. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    да и тут тоже
    PHP:
    $str "асер, монитор, 17, колонки, китай";
    $str_arr explode(','$str);
    echo 
    $str_arr[0] . ', ' $str_arr[1] . ', ' $str_arr[2];
     
  8. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    840
    Симпатии:
    94
    fanatic, это ясно, что можно так )
    но все таки когда коротко и в одно действие, то поэстетичнее что ли так сказать )
     
  9. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    длина регулярки будет длиyнее приведенного решения

    preg_replace('/(.*),(.*),(.*),(.*)/', '$1,$2,$3', $str);
     
  10. zema50

    zema50 Продвинутый пользователь

    Сообщения:
    840
    Симпатии:
    94
    спасибо.
    для моей цели лучше использовать регулярку