首页 > 解决方案 > 如何将此“create_function”调用转换为匿名函数?

问题描述

我有一些使用的代码,create_function现在已弃用。评论create_function* @deprecated 7.2 Use anonymous functions instead.

这是函数本身:create_function ('$matches', 'return strtoupper("\0");')

这是上下文:

$match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./',
                    create_function ('$matches', 'return strtoupper("\0");'), strtolower(trim($match[1])));

我的代码没有运行,因为它已被弃用,所以我想把它变成一个匿名函数。我不完全确定这段代码的作用,所以我真的没有可靠的测试方法,但我认为 create_function 块可以替换为

function($matches) {
    return strtoupper($matches);
}

那行得通吗?create_function这和函数做的事情一样吗?我不确定"\0"在这种情况下会做什么,所以我希望我能得到一些建议。

标签: phpdeprecated

解决方案


我在另一个地方找到了类似的问题,并在那里尝试了答案。原来它相当于这个函数:

function($m) {
   return strtoupper($m[0]);
}

在这里找到它:已弃用:preg_replace():/e 修饰符已弃用,请使用 preg_replace_callback

感谢@Philipp


推荐阅读