1

私はphpでこのコードを持っています - :

function pregRepler($matches)
{
    * do something
}

$str = preg_replace_callback($reg_exp,'pregRepler',$str);

function にいるとき、最初の一致か2番目の一致かなどpregRepler、現在の状態を知りたいと思います...match number

どうすればいいのですか。??

4

3 に答える 3

7

次のようなことを試してください:

function pregRepler($matches) {
    static $matchcount = 0;
    // do stuff
    $matchcount++;
}

これは、他の質問への回答で述べたように、無名関数を使用するとうまく機能します。preg_replace_callback

于 2013-04-10T20:27:23.157 に答える
2

$countたとえば、変数エイリアスを使用して、両方の変数スコープ間で変数を共有する必要があります。

$callback = function($matches) use (&$count) {
    $count++;
    return sprintf("<%d:%s>", $count, $matches[0]);
};

echo preg_replace_callback($pattern, $callback , $subject, $limit = -1, $count);

呼び出す前$countは 0 です。呼び出した後$countは、行われた置換の数に設定されます。その間に、コールバックでカウントアップできます。もう一度呼び出すときに、もう一度ゼロに設定することもできます。

実際に見る

http://php.net/preg_replace_callbackを参照してください

于 2013-04-10T21:08:40.683 に答える
0
$repled     = 0;
function pregRepler($matches)
{
    * do something
    global $repled;
    $repled++;
}

$str = preg_replace_callback($reg_exp,'pregRepler',$str);

グローバル変数からカウントするだけです。

于 2013-04-10T20:27:35.903 に答える