允许对 PHP preg_replace_callback 中的数组进行写访问

Allow write access to array in PHP preg_replace_callback

我正在尝试写入一个在匿名 preg_replace_callback 函数之外初始化的数组。我尝试了 "use" 关键字,还声明了变量 "global",但似乎都不起作用。

这是我的代码:

$headwords=array_keys($dict);
$replaced=array();
// Scan text

foreach($headwords as $index=>$headword){
    if(preg_match("/\b".$headword."\b/", $transcript)){
        $transcript=preg_replace_callback("/(\b".$headword."\b)/", function($m) use($index, $replaced){
            $replaced[$index]=$m[1];
            return "<".$index.">";
        }, $transcript);
    }
}

“$replaced”的 var_dump 显示为空数组。 preg_replace_callback 循环是 public class 函数的一部分,如果有任何区别的话。

我尝试用谷歌搜索这个问题,但没有成功。 非常感谢您对此问题的任何帮助。

你快完成了: 如果您打算在范围外重用它,您忘记在 use 参数内将引用 & 添加到 $replaced 变量。

   $transcript=preg_replace_callback("/(\b".$headword."\b)/", function($m) use($index, &$replaced){
        $replaced[$index]=$m[1];
        return "<".$index.">";
    }, $transcript);