Сохранение Preg_replace_callback в массиве

Я пытаюсь сохранить каждое совпадение, найденное с помощью 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);

0

Решение

Вам нужно поставить 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]