Preg_replace_callback 存储在数组中

Preg_replace_callback storing in array

我希望将使用 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 数组,而不是覆盖它。而且我怀疑您想要 href 属性中 #ref$count 之间的 space。

$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);