Я использую preg_replace_callback для замены определенных токенов в строке. Но помимо фактического токена мне нужно также знать, был ли этот токен первым, вторым или третьим в строке темы. Есть ли способ получить доступ к этой информации?
Я нашел аргумент $ count в определении preg_replace_callback (http://php.net/manual/en/function.preg-replace-callback.php),, который считает замены, но я не уверен, доступен ли он из-за обратного вызова. контекст?
Переменная $count out устанавливается только после выполнения всех замен. Вместо этого попробуйте статическую переменную:
$count
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 );
Вы всегда можете создать нелокальную переменную, чтобы сохранить счет.