Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите составить регулярку

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bio man
Отправлено: 18 Ноября, 2013 - 19:00:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Исходные данные: строка такого вида
Цитата:
Anakena М Белый Пласт.гор.h.60 d.50 80л (вкл.12л) шт 9'960.00 2.000 19'920.00

Нужно распарсить строку, что бы некоторые данные попали в переменную.
1. Anakena (может быть другое слово)
2. M (размер, может быть S, M, L, XL, XXL)
3. Белый
4. 9'960
5. 2.000

Спасибо.
(Добавление)
Anakena М Белый получилось самому. Подскажите регулярку, которая пропустит мусор, типа, Пласт.гор.h.60 d.50 80л (вкл.12л) шт
?

(Отредактировано автором: 18 Ноября, 2013 - 19:03:43)

 
 Top
teddy
Отправлено: 18 Ноября, 2013 - 20:50:12
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match("/([a-z]+) ([а-яёa-z]{1,3}) ([а-яё]+).*\(.*\)[.*]? [а-я ]+([\d'\.]+) ([\d\.]+)/ui", $str, $matches);
  2. print_r($matches);

вроде нормально матчится...

(Отредактировано автором: 18 Ноября, 2013 - 20:57:12)

 
 Top
Bio man
Отправлено: 18 Ноября, 2013 - 22:22:40
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Спасибо! Немного подправил и заработало!
(Добавление)
А хотя нет. Нужно сделать эту часть ([\d'\.]+) необязательной. Как?
 
 Top
teddy
Отправлено: 18 Ноября, 2013 - 22:57:30
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




можно попробовать после круглой скобки поставть знак ? но тогда будет матчиться и остаток как отдельный элемент массива(если остаток будет и он будет начинаться с числа)как убрать каку - пока не придумал...
 
 Top
Bio man
Отправлено: 18 Ноября, 2013 - 23:04:32
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Все норм, вопросик помог
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB