【问题标题】:Regex to match PHP Function definition [closed]正则表达式匹配 PHP 函数定义 [关闭]
【发布时间】:2016-03-22 12:17:53
【问题描述】:

我需要一个正则表达式字符串来匹配 PHP 函数定义,例如:

function anyname(any, number, of, params) {

在 Geany 或 Notepad++ 等编辑器中,在匹配的函数定义中插入静态文本(当然是 PHP 代码),例如 var_dump(debug_backtrace());

因为我必须调试一个非常大的 PDF 类文件,大小约为 1.24MB,并且有 60 多个函数定义。

谁能帮忙?

【问题讨论】:

  • 不明白为什么这个问题被否决了?对于调试 n Live 站点的开发人员来说,这可能是真正的帮助。投反对票没有意义。
  • 好吧,通过调试类,我的意思是我想知道在实例化 PDF 类并生成 pdf 时调用了哪些函数。首先,我必须将var_dump(debug_backtrace) 放在每个函数中,因为我想“快速执行”是我提出问题的意图,我无法在实时站点中测试正则表达式,所以我问了这个,是否有人以前做过。

标签: php regex pattern-matching editor


【解决方案1】:

这个怎么样:

function\s+.*?\)\s*{

我做了一个粗略的测试,它可以在我的 Notepad++ 上运行。

编辑

如果您需要将这些替换为调试回溯,请执行以下操作:

查找:

function\s+(.*?)\)\s*{

替换:

function \1\) {\nvar_dump\(debug_backtrace\(\)\);

使用 Notepad++ 测试。

说明:

正则表达式本身并没有什么花哨的。 .*? 仅表示“匹配任何东西,不贪婪”。它将匹配所有内容,直到看到右括号并停止。

在查找和替换的过程中,.*?被括在一个括号中,因为我们需要把它作为我们需要保存的文本取出,然后在替换的\1位置填充。

【讨论】:

  • 感谢您的帮助,它实际上找到了所有功能,但是如何将匹配的定义行替换为行本身以及换行符和添加的新行,例如 var_dump(debug_backtrace()); 和所有其余的功能代码也保持不变?
  • 另外,请详细解释你的答案。
  • 好的,再次查看我的答案
  • 非常感谢它确实取代了几乎所有功能,但其中一些仍然被遗漏了,我不认为为什么,这些如下:function dec2alpha($valor,$toupper="true"){function dec2roman($valor,$toupper=true){ 它有什么东西吗与= 或逗号符号有关。
  • 你可以以fusion3k为例。他的答案试图不匹配或匹配一个或多个空格。这些函数替换失败的原因是右括号和左大括号之间没有空格。
猜你喜欢
  • 2018-08-04
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
相关资源
最近更新 更多