Показать сообщение отдельно
Старый 13.10.2005, 16:25     # 1
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
И снова регулярные выражения

Уважаемые, спасибо за Ваше внимание вообще.

Задача в общем виде:

Нужно сопоставить шаблону ЛИБО одно слово (разделение пробелом) ЛИБО все выражение в кавычках (пусть в одинарных, не суть)

Чтобы все однозначно всеми понималось, пару примеров:
1) Есть текст $text = '123456 qaz qwerty';
Хочу чтобы выбралось 123456
2) Есть текст $text = "'123456 qaz' qwerty";
Хочу чтобы выбралось 123456 qaz - Без кавычек

Итак, в чем основная сложность и до чего я пока додумался:
1)
PHP код:
preg_match_all("#\'(.*?)\'|(\d+)#i"$text$matchesPREG_SET_ORDER); 
2)
PHP код:
preg_match_all("#(\'.*?\'|\d+)#i"$text$matchesPREG_SET_ORDER); 
Вот, впринципе, обе решают какбы поставленную задачу, но оба варианта не доконца/не так как бы хотелось:
В первом случае номера совпадений для выражения в кавычках и для одиночного слова будут разными, порядковыми (1 и 2 соответственно), это и понятно - ведь 2 раза захватывается паттерн, два раза круглые скобки, но хочется чтобы было в одном элементе.
Во втором случае элемент 1, НО, захватываются еще и сами кавычки, а хотелось бы без них (чтобы потом не анализировать это). Как их исключить там - пока не додумался.

Буду благодарен свежим мыслям и конкретным решениям.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума