2017-09-19 7 views
-1

나는이 preg_replace_callback하는 기능을하지만 시도 거의 모든 변환하려고 오류 제공합니다

가 인수 2, '$ DB-> 모듈'을 필요로 할 수 ?

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

모든 아이디어를 어떻게 변환하는 방법 ..

:

에 유효한 콜백 내 코드입니다

+0

콜백은 함수이며 매개 변수와 반환 값은 http://php.net/manual/en/function.preg-replace-callback.php와 관련하여 신중하게 선택해야합니다. – Calimero

+0

질문을 다시 열지 만 클래스 메소드가 콜백 함수로 사용될 필요가있는 특별한 경우. –

답변

2

나는 클래스 메서드를 사용해야하기 때문에 예외적으로이 질문에 대답한다. 따라서 주제에 대한 백만 건의 답변보다 그렇게 간단하지 않습니다.

한 가지 방법은 모든 매치가 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; 트릭을 사용하십시오.

+0

대단히 감사합니다! – Dikobraz