Jus*_*808 13 php preg-replace-callback
我正在尝试用传递的数组中的值替换{{key}}my中的项目$text.但当我尝试添加print_r以查看发生了什么时,我收到了一个Undefined variable: kvPairs错误.如何在preg_replace_callback?中访问我的变量表?
public function replaceValues($kvPairs, $text) {
$text = preg_replace_callback(
'/(\{{)(.*?)(\}})/',
function ($match) {
$attr = trim($match[2]);
print_r($kvPairs[strtolower($attr)]);
if (isset($kvPairs[strtolower($attr)])) {
return "<span class='attr'>" . $kvPairs[strtolower($attr)] . "</span>";
} else {
return "<span class='attrUnknown'>" . $attr . "</span>";
}
},
$text
);
return $text;
}
Run Code Online (Sandbox Code Playgroud)
更新:
我已经尝试了global范围的东西,但它也不起作用.我添加了两个打印语句来查看最新的内容,一个内部,一个外部preg_replace_callback.
public function replaceValues($kvPairs, $text) {
$attrTest = 'date';
print_r("--" . strtolower($attrTest) . "--" . $kvPairs[strtolower($attrTest)] . "--\n");
$text = preg_replace_callback(
'/(\{{)(.*?)(\}})/',
function ($match) {
global $kvPairs;
$attr = trim($match[2]);
print_r("==" . strtolower($attr) . "==" . $kvPairs[strtolower($attr)] . "==\n");
if (isset($kvPairs[strtolower($attr)])) {
return "<span class='attr'>" . $kvPairs[strtolower($attr)] . "</span>";
} else {
return "<span class='attrUnknown'>" . $attr . "</span>";
}
},
$text
);
return $text;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
--date--1977-05-20--
==date====
Run Code Online (Sandbox Code Playgroud)
Mar*_*ker 42
由于您的回调函数是一个闭包,您可以通过传递额外的参数 use
function ($match) use ($kvPairs) {
...
}
Run Code Online (Sandbox Code Playgroud)
比污染全球空间更好
| 归档时间: |
|
| 查看次数: |
3578 次 |
| 最近记录: |