【发布时间】:2014-08-13 13:43:19
【问题描述】:
我在这里发帖是因为我已经搜索了几个小时的答案,并且在本网站 http://www.regexr.com/ 上尝试和错误中失去了更多其他人,以获得最佳的正则表达式。
除了第一个函数逗号之外,我找不到任何东西可以删除所有逗号。
#Quick Edit:我将始终将函数的内容作为字符串保存在我的 php 脚本中,因为我从发起函数调用的文件中复制了它。
这是一个例子:
MyClass::myFunction(
array_merge($params, ['a', 'b', 'c', 'd']),
array_merge(["p01"], ["s01", "s02", "s03"]),
oi("s04", "p02", "p03"),
[["p05", "p06", "p07"],],
[
oi(),
"p04",
["p05", "p06", "p07"],
oi("p08", "p09", "p10", ["s05", "s06", "s07"]),
],
[
"p04",
["p05", "p06", "p07"],
oi("p08", "p09", "p10", ["s05", "s06", "s07"]),
]
)
我只想替换除 myFunction 之外的所有逗号(分隔它的参数是参数)。
我已经能够获取 myFunction 括号内的所有内容,因此您不必处理这些。
#Edit:我需要这个的原因是因为我为我的项目开发了一个调试函数,它准确地显示了生成该代码的变量/函数/事物。
oi() 函数只是一个随机函数,用于示例目的。在这种情况下,它将返回一个带有它接收到的参数的数组。
这是我的做法:
例子:
$variable = 'This is a test variable. For the purpose os testing, 2 + 2 is ' . ( 2 + 2 );
MyClass::myFunction($variable);
- 函数执行后,我通过 debug_backtrace() 获取函数调用参数。
- 我从执行它的文件中复制了被调用函数的全部内容,因此我将其作为字符串获取。
- 我只得到函数内部的内容,删除了 MyClass::myFunction( 和最后一个 )。
- 我将结果用逗号分解以获取函数的所有参数,但是这样,我将无法分解的逗号分解。我需要一种方法来找出我需要分解的逗号。
这是上面例子的最终结果(因为我不能发布图片,我会输入它):
<pre>
<pre class="source">variable</pre>
<pre class="content"><small>string</small>'This is a test variable. For the purpose os testing, 2 + 2 is 4' <i>(length=63)</i></pre>
</pre>
【问题讨论】:
-
请重新表述您的核心问题。 为什么要删除逗号?从显示的源代码?那会破坏数组声明。目的是什么?
oi()是什么? -
PHP 表达式语法不是常规语言 (afaik),所以你不能用 regex 真正做到这一点。
-
为什么不使用现有的跟踪器/调试器?
-
@DanFromGermany - 你有什么建议可以做到我在这里想要实现的目标吗?我需要知道究竟是什么产生了该输出。无论是方法调用、数组、对象等等。
-
感谢人们否定这个问题而不是说为什么......来自这个网站的真棒支持。我想要的只是一些提示......(y)
标签: javascript php regex