这不起作用
$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中存储的函数? :)
答案 0 :(得分:1)
你为什么要那样做?我认为没有理由将函数存储在变量中,说实话。不过,如果你真的想这样做,请看看create_function:
<?php
$check["pattern"] = "/correct/";
$callback = create_function('$m', 'return ucfirst($m[0]);');
echo preg_replace_callback( $check['pattern'], $callback, "correct" );
// Output: "Correct"
答案 1 :(得分:1)
如果您在$callback = "function ($m) { return ucfirst($m[0]);}";
上执行var_dump,则结果为字符串。在工作情况下,您将Closure(匿名函数)作为回调传递。
manual很清楚:允许关闭,如果你传递一个字符串,它必须是函数的名称。