나는이 preg_replace_callback하는 기능을하지만 시도 거의 모든 변환하려고 오류 제공합니다가
가 인수 2, '$ DB-> 모듈'을 필요로 할 수 ?
$this->template = preg_replace ("/#module\=(\w+)#/ie", "\$this->module('\\1')", $this->template);
모든 아이디어를 어떻게 변환하는 방법 ..
:이에 유효한 콜백 내 코드입니다
나는이 preg_replace_callback하는 기능을하지만 시도 거의 모든 변환하려고 오류 제공합니다가
가 인수 2, '$ DB-> 모듈'을 필요로 할 수 ?
$this->template = preg_replace ("/#module\=(\w+)#/ie", "\$this->module('\\1')", $this->template);
모든 아이디어를 어떻게 변환하는 방법 ..
:이에 유효한 콜백 내 코드입니다
나는 클래스 메서드를 사용해야하기 때문에 예외적으로이 질문에 대답한다. 따라서 주제에 대한 백만 건의 답변보다 그렇게 간단하지 않습니다.
한 가지 방법은 모든 매치가 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;
트릭을 사용하십시오.
대단히 감사합니다! – Dikobraz
콜백은 함수이며 매개 변수와 반환 값은 http://php.net/manual/en/function.preg-replace-callback.php와 관련하여 신중하게 선택해야합니다. – Calimero
질문을 다시 열지 만 클래스 메소드가 콜백 함수로 사용될 필요가있는 특별한 경우. –