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