使用正则表达式查找文件中的方法和参数

时间:2016-08-06 07:52:00

标签: regex

所以我试图使用preg_match_all搜索php文件,在那里查找方法用法并从中获取参数值。

例如,如果我有方法调用,如:

method("some text", null, "third param")

我想将some textnullthird param放到数组中。

我能够得到第一个参数,第二个和第三个有问题的bug。

我尝试了什么:

\(method)\([\'"](.*?[ \na-zA-Z0-9_-]+)[\'"]\im

https://regex101.com/r/dC8wV6/2

1 个答案:

答案 0 :(得分:1)

你可以尝试

method\s*\(((?:\s*(?:['"][^'"]*['"]|\w+)\s*(?:,|(?=\))))*)

捕获第1组中的参数,然后将其拆分为,,(?=(?:(?:[^'"]*['"]){2})*[^'"]*$)以获取参数数组。

这种模式伴随着常见的陷阱,即字符串中的逗号(method(" , "))或不匹配的引号(" ' ")或转义引号(" \" ")会将其绊倒。这些问题可以修复,但我认为正则表达式足够长。