所以我试图使用preg_match_all
搜索php文件,在那里查找方法用法并从中获取参数值。
例如,如果我有方法调用,如:
method("some text", null, "third param")
我想将some text
,null
和third param
放到数组中。
我能够得到第一个参数,第二个和第三个有问题的bug。
我尝试了什么:
\(method)\([\'"](.*?[ \na-zA-Z0-9_-]+)[\'"]\im
答案 0 :(得分:1)
你可以尝试
method\s*\(((?:\s*(?:['"][^'"]*['"]|\w+)\s*(?:,|(?=\))))*)
捕获第1组中的参数,然后将其拆分为,
或,(?=(?:(?:[^'"]*['"]){2})*[^'"]*$)
以获取参数数组。
这种模式伴随着常见的陷阱,即字符串中的逗号(method(" , ")
)或不匹配的引号(" ' "
)或转义引号(" \" "
)会将其绊倒。这些问题可以修复,但我认为正则表达式足够长。