允许对 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);
我正在尝试写入一个在匿名 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);