php文件模式regexp中的preg_split php函数

php文件模式regexp中的preg_split php函数,php,regex,pattern-matching,preg-split,Php,Regex,Pattern Matching,Preg Split,可能重复: 我正在编写一个脚本来读取我的PHP文件,并将所有函数作为返回 我正在使用preg\u split()将我的文件拆分为一个函数数组 我在编写模式以获取返回的所有函数时遇到了问题(当函数名包含“function”一词时,我会面临这个问题)。我愿意接受任何其他解决方案/建议 预期产出: array ( 0 => 'function write{$oneparam, $two, $three){return $two}', 1 => 'function read{$on

可能重复:

我正在编写一个脚本来读取我的PHP文件,并将所有函数作为返回

我正在使用
preg\u split()
将我的文件拆分为一个函数数组

我在编写模式以获取返回的所有函数时遇到了问题(当函数名包含“function”一词时,我会面临这个问题)。我愿意接受任何其他解决方案/建议

预期产出:

array (
  0 => 'function write{$oneparam, $two, $three){return $two}',
  1 => 'function read{$oneparam, $two, $tthree){returne $awesome}',
  2 => 'function edit{$oneparam, $two, $three){return $two},
  3 => 'function delete{$oneparam, $two, $three){return $two}',
  4 => 'function lastfunction{$oneparam, $two, $three){return $two}'
)

您可以尝试以下方法来捕获名称/声明:

#(function\s+\w+\(.*?\)#s

或者包括函数体(假设它们位于一行上,如示例中所示):


,没有任何示例输入或更多细节,我无法进一步阐述。

使用正则表达式解析编程语言是个坏主意。为此,您应该使用
preg\u match\u all
。但要获得更准确的结果,请使用tokinizer。请让我查找重复项…这只是出于文档目的,我想记录我的所有函数d使用正则表达式使用.Mario你的答案是对的。这是我的错误。preg_match_所有的工作都很完美。我很抱歉如果想要捕获完整的函数体,
\{.*.}
部分需要一个嵌套的捕获组;可能需要一个完整的语法表示(只有边界可行)来理解“字符串”中的大括号。“或者这包括函数体(假设它们在一行上,如示例中所示):“预期输出是否非常感谢您的帮助。如果它们不在同一行上呢?(您知道普通php)
#(function\s+\w+\(.*?\)\s*{.*?})#s