我有这个代码:
function pregRepler($matches)
{
* do something
}
$str = preg_replace_callback($reg_exp, 'pregRepler', $str);
在函数
pregRepler
中时,我想知道当前的match number
,就像它是第一个匹配还是第二个匹配或其他什么。
我该怎么做?
您需要在两个变量作用域之间共享一个
$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
设置为完成的替换次数。在这两者之间,您可以在回调中进行计数。您也可以在下次呼叫时再次设置为零。
$repled = 0;
function pregRepler($matches)
{
* do something
global $repled;
$repled++;
}
$str = preg_replace_callback($reg_exp,'pregRepler',$str);
只需从全局变量中计数即可。