Я ищу способ шаблона, соответствующий «геометрии» массива, порядок, в котором элементы отображаются, а не содержимое каждого элемента напрямую.шаблон, соответствующий массиву, а не их элементы как таковые
Позвольте мне изложить, что я имею в виду под некоторыми примерами. Учитывая целевой массив:
array('T_STRING','T_VARIABLE','ASSIGN','T_STRING','LPAREN','T_VARIABLE','COMMA','T_VARIABLE','RPAREN');
//as a matter of fact, these would be the tokens for the PHP code "foo $var = Foo($arg1,$arg2)'
Тогда следующий «шаблон» сопрягать бы, возвращение индексов в 0 на основе матчей, а также индексы группировок, так же, как preg_match_all() будет делать для строки:
array('T_STRING', '?', '(', 'T_VARIABLE', 'ASSIGN' ')', '?',
'T_STRING', 'LPAREN', '(', 'T_VARIABLE', 'COMMA', '?', ')', '?', 'RPAREN');
Это только упрощенное PoC, как я намерен использовать его гораздо сложнее, и я не хочу использовать полный генератор парсеров из PEAR (лимон порт PHP), который был бы излишним.
Знаете ли вы о функции (возможно, не о внутренней функции PHP) или проекте, который делает именно это?
спасибо.
Конечно, что-то я уже думал, но как насчет части «возврат индексов на основе 0 совпадений, а также индексы группировок», которые я не написал жирным шрифтом по ошибке? ... – Flavius
Как вы можете знать, если вы собираетесь использовать regexp, третий параметр в 'preg_match ($ expression, $ content, $ matches)' может возвращать согласованные компоненты. Вам, возможно, придется сделать какую-то дополнительную работу оттуда, но она должна дать вам приличный стоп. Однако, в конечном счете, я не уверен, что regexp - лучший способ сделать это. –