0

このコード:

$t = 100;
$str = preg_replace_callback("/(Name[A-Z]+[0-9]*)/",
                            create_function(
                                  '$matches',
                                  'return $matches[1] + $t;'
                            ), $func);

$t を preg_replace() 関数の create_function() から見えるようにする方法は?

4

5 に答える 5

2

変数をアクセス可能にすることはできませんが、あなたの場合は値を使用できます:

$t = 100;
$str = preg_replace_callback("/(Name[A-Z]+[0-9]*)/",
                            create_function(
                                  '$matches',
                                  'return $matches[1] + ' . $t .';'
                            ), $func);

ただし、ここ ( http://php.net/functions.anonymous ) の構文を使用することを強くお勧めします。function($matches) use ($t) {}

また、次の eval 修飾子がありpreg_replaceます。

$str = preg_replace("/(Name[A-Z]+[0-9]*)/e", '$1+'.$t, $func);

しかし、とにかくあなたの関数がここで間違った演算子を使用しているように感じます-または間違ったパターン/サブパターン。

于 2012-04-12T20:37:08.167 に答える