【问题标题】:Using Regular Expressions to parse functions from a string in PHP在 PHP 中使用正则表达式从字符串中解析函数
【发布时间】:2011-01-28 16:23:33
【问题描述】:

有没有一种合乎逻辑的方法可以在 PHP 中使用正则表达式去除函数名称及其参数?目前我将它逐行拆分,以便我能够在每一行上使用每个函数以便于标记。

所以:

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

变成

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

我遇到的真正问题是使用正则表达式获取函数名称以使其具有如下语法:

$functionfromregex($args);

这些函数是使用 PHP 的“变量函数名”能力构造的,所以这是可能的。参数被视为数组,因为没有合理的方法将它们粘合在一起,PHP 需要将它们解析为。真正的缺点是我对正则表达式不太熟悉,任何帮助将不胜感激,如果您需要任何其他信息,请随时询问。

【问题讨论】:

  • 这是您解析结构化文本并且正则表达式不可行的情况之一。正则表达式并不是你在碰巧涉及文本的每一个问题上挥舞的魔杖。

标签: php regex parsing function


【解决方案1】:

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

【讨论】:

  • 这很简单。干杯伙伴。
【解决方案2】:

您还可以查看 Reflection 类。

【讨论】:

    【解决方案3】:

    所以我不确定在 php 中,我在 java 中做类似的事情,下面的代码以类似的方式剥离它:

    [^(&&[^)&&[^,]]] 应用于 foo(param1, param2, param3) 将返回 ["foo", "param1", "param2", "param3"]。

    我遇到的问题是,这会串出所有的 '(' 和 ')',因此无法判断您的参数实际上是变量还是方法。

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 2011-10-14
      • 2015-11-22
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多