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 を実行すると、文字列になります。作業状況では、Closure (無名関数) をコールバックとして渡します。

マニュアルは明確です。クロージャが許可されています。文字列を渡す場合、それは関数の名前でなければなりません。

于 2012-09-13T09:21:48.263 に答える