坚持使用Preg_replace()到Preg_replace_callback()

时间:2017-09-19 09:47:51

标签: php preg-replace preg-replace-callback

我正在尝试将此函数转换为preg_replace_callback,但几乎我尝试的所有内容都会出错:

需要参数2,'$ db-> module',才能成为中的有效回调

这是我的代码:

$this->template = preg_replace ("/#module\=(\w+)#/ie", "\$this->module('\\1')", $this->template);

任何想法如何转换它?..

1 个答案:

答案 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;