Я пытаюсь сохранить каждое совпадение, найденное с помощью preg_replace_callback, в массиве, который будет использоваться позже. Это то, что я имею до сих пор, и я не могу понять, что не так, в настоящее время он хранит последнее найденное совпадение, как в $ match [0], так и в $ match [3].
Что я пытаюсь достичь в целом, так это заменить каждое совпадение на число с гиперссылкой, а затем распечатать полный текст под ним. Каждый номер должен быть связан с соответствующим текстом.
global $match;
$match = array();
$pattern = $regex;
$body = preg_replace_callback($pattern, function($matches){
static $count = 0;
$count ++;
$match = $matches;
return "<a href=\"#ref $count\">$count</a>";
}, $body);
Вам нужно поставить global
утверждение внутри функции. Вам также нужно вставить новый элемент в $match
массив, не перезаписывать его. И я сомневаюсь, что вы хотите пространство между #ref
а также $count
в href
приписывать.
$match = array();
$pattern = $regex;
$body = preg_replace_callback($pattern, function($matches){
global $match;
static $count = 0;
$count ++;
$match[] = $matches;
return "<a href=\"#ref$count\">$count</a>";
}, $body);
Других решений пока нет …