За последние 24 часа нас посетили 18059 программистов и 1589 роботов. Сейчас ищет 1591 программист ...

Разбить запрос поиска на множество значений

Тема в разделе "Регулярные выражения", создана пользователем Invision, 15 дек 2012.

  1. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Дано:
    Должно получиться:
    Конкретно нужно удалять все после и сам символ последний в строке "-", разбить модели 3110c/ 3109c/ 2220..
    Подскажите решение пожалуйста.
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Поставлю вопрос проще. Как из строки
    Получить:
    Если пропустить через explode, то первое значение будет Дисплей Nokia 3110c, что не есть гуд)
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Сначала убери из строки Дисплей Nokia, потом уже explode и trim. Или там миллионы дисплеев, все не учесть?
    И даже если первое значение Дисплей Nokia, что в этом страшного? Можно просто не учитывать.
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Все решил задачу.
    Использовал:
    explode, mb_substr, mb_strrpos и str_replace :)
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Видимо опаздал... но не пропадать же труду:)

    Составил следующую ругулярку

    Код (PHP):
    1. $string = 'Дисплей Nokia 3110c/ 3109c/ 2220s/ 2320/ 2323/ 2330/ 2680s/ 2690/ 3500/ 7070 - AA';
    2.  
    3. $pattern = '/\d+\w?\/?/';
    4.  
    5. preg_match_all($pattern, $string, $matches);
    6. print_r($matches);
    7.  
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Это гораздо лучше того, что я нагородил :) Спасибо.
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    критика /\d+\w?\/?/
    \d уже содержится внутри \w а для ускорения регекспов лучше указывать как можно более конкретный шаблон
    к томуже, несматчится значения типа C1/ E50
    ну и регистр может быть любым

    я бы модифицировал так:
    /[a-z]?\d+[a-z]?/i
     
  8. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    runcore, благодарю.