0

这不起作用

        $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 中的函数一起工作?:)

4

2 回答 2

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"
于 2012-09-13T09:20:58.633 回答
1

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

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

于 2012-09-13T09:21:48.263 回答