여러 공백을 무시하고 주어진 템플릿의 내용과 모든PHP 정규식 - 나는 현재 간단한 PHP 템플릿 엔진에서 일하고 있어요
{% include file="anotherTemplate.tpl" %}
를 교체합니다. 이 작업에서는 정규식을 사용합니다.
private $funcSeparatorL = '{%';
private $funcSeparatorR = '%}';
// ...
preg_match('/' . $this->funcSeparatorL . ' include file="(.*)\.(.*)" ' . $this->funcSeparatorR . '/', $this->content)
이것은 잘 작동하지만 구분자와 중간 사이의 공백 사이에는 공백이 하나만 있습니다. 나는 여러 가지 공간을 사용하여 전체 오류를 더 잘 견딜 수 있기를 원합니다.
그러나 복수 문자와 일치 시키려면 .*
을 사용하면 전체 페이지가 영원히로드되고 완료되지 않습니다.
preg_match('/' . $this->funcSeparatorL . '.*include file="(.*)\.(.*)".*' . $this->funcSeparatorR . '/', $this->content)
는 .*
는 작업 및 예하면, 왜 이러한 오류가 발생할 않습니다를 처리 할 수있는 적절한 방법이 있나요?
답변 주셔서 감사하지만 불행히도 예제가 작동하지 않았습니다. :/ –
작동하지 않는 것을 명확히 할 수 있습니까? preg_match는 대치 작업을 수행하지 않고 그냥 일치하는 것을 유의하십시오. 대신에 preg_replace가 필요합니다. –
물론, while 루프 내에서'preg_match'를 사용하고 각각의 경우에 대해 뭔가를 반향합니다. 필자의 첫 번째 접근 방식에서는 파일의 모든 포함에 대해 반향을 나타내지 만 예제에서는 포함과 일치하지 않습니다. –