我正在使用preg_replace_callback替换字符串中的特定标记。但除了实际的标记之外,我还需要知道该标记是主题字符串中的第一个、第二个还是第三个。有没有办法访问该信息?
我在 preg_replace_callback 定义(http://php.net/manual/en/function.preg-replace-callback.php )中找到了一个参数$count,它计算了替换,但我不确定它是否可以从回调中访问. 在所描述的上下文中使用的任何示例?
我正在使用preg_replace_callback替换字符串中的特定标记。但除了实际的标记之外,我还需要知道该标记是主题字符串中的第一个、第二个还是第三个。有没有办法访问该信息?
我在 preg_replace_callback 定义(http://php.net/manual/en/function.preg-replace-callback.php )中找到了一个参数$count,它计算了替换,但我不确定它是否可以从回调中访问. 在所描述的上下文中使用的任何示例?
只有在$count
所有替换完成后才会设置 out 变量。相反,请尝试使用静态变量:
function repl($matches) {
static $count = 0;
++$count;
...
}
preg_replace_callback('/.../', 'repl', $haystack);
您始终可以创建一个非局部变量来保持计数。
使用 php 5.3+,您还可以使用闭包(而不是全局或静态变量)
$counter = 0
preg_replace_callback('/.../', function($matches) use(&$counter) {
++$counter;
...
}, $haystack
);