간단한 템플릿 언어를 작성했지만 중첩 된 문장에 문제가 있습니다.PHP 템플릿 언어
preg_match('/\{foreach +\$(.*?)\}(.*?){\/foreach\}/sui', $this->content, $matches);
모든 것이 잘 작동,하지만 난 foreach 문에서 foreach 문을 중첩 할 때, 나는 오류가 예를 들어 나는의 Foreach이 정규 표현식에 사용. 정규 표현식은 첫 번째 여는 태그지만 두 번째 닫는 태그를 얻기 때문에.
{foreach는 $의 XY}
{foreach는 $의 YX} {/ foreach는}
{/ foreach는}
나는이 문제를 어떻게 해결할 수 있습니까? 고맙습니다!
정규식은 일반적으로 중첩 된 구문을 처리하는 데 적합하지 않습니다. –
다음을 읽어야합니다. http://stackoverflow.com/a/1732454/1225541 – alestanis
정규식은 언어 구문 분석에 적합하지 않습니다. 방금 이유를 발견했습니다. 또한 많은 좋은 해결책이 이미 존재할 때 자신의 템플릿 언어를 쓰지 못하게 할 것입니다. –