简体   繁体   中英

Using Regular Expressions to parse functions from a string in PHP

Is there a logical way to strip out function names and their arguments using Regular Expressions in PHP? Currently I have it splitting line by line so that I am able to have each function on each line for easier markup.

So:

doSomeFunction(arg, moreargs, stuff);
breakSomething();
ini_set(include_path, /home/htdocs/);

becomes

array([0] => 'doSomeFunction(arg, moreargs, stuff);', [1] => 'breakSomething();' and so on...

The real problem I am having is getting the function name using regex to have syntax like:

$functionfromregex($args);

The functions are constructed using PHP's "Variable Function Name" ability, so it is possible. Arguments are taken in as arrays since there is no reasonable way to glue them togather the way that PHP needs to parse them as. The real downside is that I am not too familiar with Regular Expressions, any help will be greatly appreciated, and if you need any other information feel free to ask.

如果要解析PHP,可以使用token_get_all获取给定代码的标记

您还可以查看Reflection类。

So I'm not sure in php, I'm doing something similar in java and the following code strips it in a similar way:

[^(&&[^)&&[^,]]] applied to foo(param1, param2, param3) will return ["foo", "param1", "param2", "param3"].

The problem I'm having is that this will string out all '(' and ')', so there is no way to tell if your param is actually a variable or a method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM