1

我在 php 中有这段代码-:

function pregRepler($matches)
{
    * do something
}

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

在功能中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 回答