index.htm 파일 내용:
<html>
<머리>
<본문>
<!-- RowSort 시작 -->
{정렬 목록}<br>
<!-- RowSort 종료 -->
</body>
</head>
</html>
index.php 내용:
<?
$t->set_file("색인", "index.htm");
$t->set_block("색인", "RowSort", "RowsSort");
................................................. ..
.............$목록_정렬........................
$t->set_var("정렬목록", $list_sort);
$t->parse("RowsSort", "RowSort", true);
................................................. ..
................................................. ..
$t->parse("OUT", "인덱스");
$t->p("OUT");
?>
자세한 분석 과정:
1. $t->set_file ("Index", "index.htm") $this->file[index] = index.htm
2. $t->set_block("Index", "RowSort", "RowsSort")
1. 인덱스 파일 index.htm의 내용을 로드하고 이를 $this->varvals[index] 변수에 할당합니다.
2. $str = $this->varvals[index]는 템플릿 파일 내용을 가져옵니다.
3. preg_match_all 함수를 사용하여 템플릿 파일의 해당 블록(RowSort) 내용을 일치시키고 $m[1][0]에 저장합니다.
4. 잠금(RowSort)의 콘텐츠(헤드 및 테일 포함)를 {RowSort}로 교체합니다.
5. 변수 $this->varvals[RowSort] = $m[1][0] , $this->varkeys[RowSort] = /{RowSort}/
6. 변수 $this->varvals[index] = $str(내용이 변경되었습니다. 4단계 참조), $this->varkeys[index] = /{index}/
3. $t->set_var("SortList", $list_sort);
set $this->varvals[SortList] = $list_sort
$this->varkeys[SortList] = /{SortList}/ 설정
4. $t->parse("RowsSort", "RowSort", true); (정렬의 크기에 따라 이 작업이 반복됩니다.)
1. subst 함수를 사용하여 $에 있는 모든 변수 값을 비교합니다. this->varvals 배열은 특수 문자와 $가 처리되고(다음 preg_replace에서 사고가 발생하지 않도록 $는 각각 및 $로 대체됨) $에 할당됩니다. varvals_quoted 배열
2. $str = $this->varvals[RowSort]
3. 현재 $str에 {SortList}가 포함되어 있음을 확인할 수 있으며, 세 가지에서 $this->varkeys[SortList] = /{SortList}/, $this->varvals[SortList] = $list_sort를 볼 수 있습니다.
4. preg_replace 이후에 얻은 $str은 PHP 템플릿 변수 {SortList}를 파싱한 후의 내용이고, $str을 반환하는 것을 알 수 있습니다.
5. $this->varvals[RowSort]에 대한 연속 할당을 수행합니다. // 여기에는 문제가 있습니다. 첫 번째 {RowSort}가 표시될 때 구문 분석되지 않는다고 생각할 수 있습니다. phplib에는 처리할 종료 함수가 있습니다. 귀하의 요청에 따라 처리됩니다
5. $t->parse("OUT", "Index");
1. $this->varvals[index]에 구문 분석할 PHP 템플릿 변수, 즉 {RowSort}가 있음을 알 수 있습니다.
2. 이전 단계에서는 $this->varvals[RowSort]의 내용을 구문 분석했습니다.
3. 이러한 방식으로 모든 PHP 템플릿 변수의 구문 분석된 내용을 $this->varvals[OUT] 변수에 할당합니다.
6. $t->p["OUT"];
분명히 phplib의 p 함수는 출력 함수입니다. , $this->varvals[OUT]을 직접 출력할 수 있습니다.
//여기서 주목해야 할 점은 phplib가 출력 전에 자동으로 수행하는 작업이 있다는 것입니다. 이는 구문 분석되지 않은 PHP 템플릿 변수를 요구 사항에 따라 처리하는 것입니다.