【发布时间】:2012-03-28 21:21:44
【问题描述】:
我正在编写一个脚本,用于循环遍历 PHP 文件并在必要时重命名函数调用。这种选择需要遵循以下规则:
- 没有函数声明 //function test() {
- 没有静态函数 //SomeClass::staticMethod()
- 没有类函数 // $class->method()
- 仅函数调用 // myFunction()
目前我有以下正则表达式:
preg_replace_callback("/((?<=function\s|\:\:|->)[a-z][a-zA-Z0-9\_]+)\(.*\)/i", 'test', $content);
- 函数名称大多以驼峰表示法编写。
- 有时函数名称包含下划线。
这是断言背后的积极看法:它给出了所有被 NO 分类的给定规则 :)
所以我必须以消极的方式改变它,但这是我的问题。当我尝试时,它没有按建议工作。
编辑
当我尝试否定断言背后的看法时
'?<!' instead of '?<='
上面的例子给出了以下输出:
- est()(先丢失)
- taticMethod()(先丢失)
- ethod()(先丢失)
- myFunction()(正确)
它删除了我不想匹配的函数的第一个字母。有谁知道怎么做的吗?
【问题讨论】:
-
什么不符合建议?
-
当我在上面的示例中尝试对断言('?