我正在寻找一种模式匹配数组的“几何”的方式,即元素出现的顺序,而不是直接匹配每个元素的内容。
让我通过一些例子来概述我的意思。给定目标数组:
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 函数)或项目可以做到这一点?
谢谢你。