preg_replace_callback:作为不起作用的变量传入替换回调



这不适用于

        $check["pattern"] = "/correct/";
    $callback = "function ($m) { return ucfirst($m[0]);}";
    echo preg_replace_callback($check["pattern"],$callback,"correct" );
output: correct

这适用于

        $check["pattern"] = "/correct/";
    echo preg_replace_callback($check["pattern"],function ($m) { return ucfirst($m[0]);},"correct" );
output: Correct

为什么,以及如何使其与存储在var中的函数一起工作?:)

为什么要这样做?老实说,我认为没有理由将函数存储在变量中。尽管如此,如果您真的想这样做,请查看create_function:

<?php
$check["pattern"] = "/correct/";
$callback = create_function('$m', 'return ucfirst($m[0]);');
echo preg_replace_callback( $check['pattern'], $callback, "correct" );
// Output: "Correct"

如果对$callback = "function ($m) { return ucfirst($m[0]);}";执行var_dump,结果将是字符串。在工作情况下,您传递一个Closure(匿名函数)作为回调。

手册很清楚:闭包是允许的,如果你传递一个字符串,它必须是函数的名称

最新更新