这不适用于
$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(匿名函数)作为回调。
手册很清楚:闭包是允许的,如果你传递一个字符串,它必须是函数的名称。