在回答另一个关于正则表达式的问题时,我被告知使用preg_replace_callback
函数(PHP regex templating - find all occurrences of {{var}})作为解决我的问题的方法。这很好,但现在我有一个问题涉及回调函数中的变量范围。PHP回调函数的变量范围
解析文本的函数是类的一部分,但是我想要使用的数据本地存储在函数中。但是,我发现我不能从我的回调函数中访问这些数据。这里是我迄今为止尝试过的方式:
- 实现回调的私有类函数,传递
'$this->callback_function'
作为回调参数(不工作,PHP有一个致命错误) - 实现回调使用它的函数内(见下面的例子),但是这并没有工作,要么因为
$newData
不在范围内的内部callback_function
任何想法,我怎么能访问$newData
我的回调函数内,最好不使用全局变量?
非常感谢。
示例下面的第二次尝试(当我把它的子弹点之后不能正常格式化)
public function parseText($newData) {
...
function callback_function($matches) {
... //something that uses $newData here
}
...
preg_replace_callback('...', 'callback_function', $textToReplace);
}
嘿,谢谢,那正是我以前的样子。 – 2009-06-08 01:17:23