我正在尝试将此函数转换为preg_replace_callback,但几乎我尝试的所有内容都会出错:
需要参数2,'$ db-> module',才能成为中的有效回调
这是我的代码:
$this->template = preg_replace ("/#module\=(\w+)#/ie", "\$this->module('\\1')", $this->template);
任何想法如何转换它?..
答案 0 :(得分:2)
我特别回答这个问题,因为你必须在其中使用类方法。因此,关于该主题的答案并不是那么简单。
一种方法,以整个匹配为 CoreApi.get().getSomeData(//Your value here instead of the key)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(new Action1<SomeData>() {
@Override
public void call(SomeData someData) {
// operations are performed on data, irrelevant for the issue as even if I comment them the issue still occurs
}
});
参数的方式更改模式,并使用yourclass::module
传递数组,并将方法名称作为第二个参数:
$this
或
$this->template = preg_replace_callback('/#module=\K\w+(?=#)/i', array($this, module), $this->template);
其他方式,保持相同的模式并使用$this->template = preg_replace_callback('/#module=\K\w+(?=#)/i', 'self::module', $this->template);
技巧:
$that=$this;