我需要一种方法来在PHP中使用regex查找方法/函数的结尾。但我想知道这是否可能。
一个功能显然总是以右括号}
结束,但if/else
,for
和while
语句等等......
有没有办法用正则表达式查找和替换函数的最后一个括号?
所以我应该能够取代以下内容:
public function func1 ( $someParam )
{
if ( $someParam ) {
}
else {
}
}
到此:
public function func1 ( $someParam )
{
if ( $someParam ) {
}
else {
}
}]; // <-- note the square bracket and semi-colon
答案 0 :(得分:3)
正则表达式是该作业的错误工具。正则表达式将无法处理所有各种嵌套级别以及您可能在函数内找到的一些东西。正如mario和Matt Lo在上面的注释中所建议的那样,你需要使用一些解析文本并确定代码真实结构的东西。
PHP不是一个应该用正则表达式解析的常规语言,它在BNF中并且应该被解析。 (我的意思是,你可以使用正则表达式,但是你正在为自己设置一个糟糕的时间。你也可以在小猫之后命名你所有的变量,如果它让你感到奇怪。)
发布的tokenizer mario可能是您最好的选择,因为它将代码移动到语法树中,然后您可以将树转换回代码。如果您在使用它时遇到问题,请务必跟进一个新问题。我相信该图书馆的作者仍然在这个网站上活跃。