Index.htm ファイルの内容:
<html>
<頭>
<本文>
<!-- BEGIN 行ソート -->
{ソートリスト}<br>
<!-- END 行ソート -->
</body>
</head>
</html>
index.phpの内容:
<?
$t->set_file ("インデックス", "index.htm");
$t->set_block("インデックス", "行ソート", "行ソート");
................................................................... ..
................................$list_sort................................
$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 の 3 つからわかります。
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 テンプレート変数を処理するというものです。