如何将 preg_replace e 转换为 preg_replace_callback?

Posted

技术标签:

【中文标题】如何将 preg_replace e 转换为 preg_replace_callback?【英文标题】:How to convert preg_replace e to preg_replace_callback? 【发布时间】:2013-04-28 08:36:08 【问题描述】:

好的,所以我有点困惑。这是我现在拥有的代码,但我刚刚发现 e 修饰符已被弃用。如何将其转换为preg_replace_callback()?我还没弄明白。

$post = preg_replace("/\[code\]([^] )\[\/code\]/e", 'code(\'$1\')', $post);

【问题讨论】:

这个问题已经添加到Stack Overflow Regular Expression FAQ的“修饰符”下。 【参考方案1】:

如果没记错的话,preg_replace_callback() 会为您提供来自preg_match()$match 的结果作为输入,并期望最终结果作为输出。所以你需要编写一个返回例如的函数"code('$match[1]')".

如果 php 5.3 是一个选项,它自然可以是一个内联函数:

preg_replace_callback($regex, function($match) 
  // do stuff
  return $stuff;
, $subject);

【讨论】:

非常感谢,帮了大忙。我会在允许的时候接受。

以上是关于如何将 preg_replace e 转换为 preg_replace_callback?的主要内容,如果未能解决你的问题,请参考以下文章

php 将 preg_replace 转换为 preg_replace_callback

使用 preg_replace 保存换行符

将preg_replace()改写为preg_replace_callback()

[PHP] PHP7已经删除了preg_replace的e修饰符

ECSHOP如何解决DEPRECATED: PREG_REPLACE()报错

Ecshop如何解决Deprecated: preg_replace()报错