preg_replace의 교체 부분에서 객체를 참조하는 방법을 알고 있습니까? 문자열의 자리 표시 자 (백분율 기호로 구분)를 객체의 속성 값으로 대체하려고합니다. 이것은 객체 자체에서 실행될 것이므로/e 수정자를 사용하여 $ this를 참조하는 모든 종류의 방법을 시도했습니다. 다음과 같이 입력하십시오 :preg_replace : 교체 대상 참조 객체
/* for instance, I'm trying to replace
* %firstName% with $this->firstName
* %lastName% with $this->lastName
* etc..
*/
$result = preg_replace('~(%(.*?)%)~e', "${'this}->{'\\2'}", $template);
이 주제가 작동하도록 할 수 없습니다. 내가 얻은 메시지 중 하나는 다음과 같습니다. Model_User 객체를 string으로 변환 할 수 없습니다.
물론 $ this가 나타내는 객체를 문자열로 변환하는 것은 아닙니다 ... 개체 틀의 자리 표시 자와 일치하는 속성을 가져오고 싶습니다 (백분율 기호는 물론 제외).
나는/e 수정자를 올바르게 추적하고 있다고 생각합니다. 그러나 이것에 대해 완전히 확신 할 수도 없습니다. 아마도 이것은 훨씬 더 간단하게 달성 될 수 있습니까?
이것에 대한 아이디어가 있으십니까? 미리 감사드립니다.
나는이 경우에도이 참조가 작동한다는 것에 놀랐다. –
글쎄, 그럼 내 질문은 헛되지 않았다. :) 건배. –
여전히 큰 따옴표를 사용하는 경우 다음과 같이 preg_replace 호출에서 달러 기호를 이스케이프해야합니다. preg_replace ("~ (% (. *?) %) ~ e", "\ $ this -> \\ 2 ", $ template); – MrBuBBLs