-
-
function template($tpl = 'index',$dir = 'hello') - {
- if(!file_exists($pd = TPL_PATH.$dir.'/ '))@mkdir($pd,0777) または die("$pd ディレクトリの作成に失敗しました");//cache/tpl/hello/
- if(!file_exists($td = TPL.$dir.'/' など) ) )@mkdir($td,0777) または die("$td ディレクトリの作成に失敗しました");//data/tpl/hello/
$t2p = $pd.$tpl など.' .php';//cache/tpl/hello/index.php
- $t2h = $td.$tpl.'.html';//html テンプレート ファイルの通常の変換後に形成された php ファイルファイル (例: data/tpl/hello/index.html
- ?>
-
コードをコピー
) 2. 定期的な変換が必要になるのはどのような場合ですか?正規化後のphpファイルが存在しないか、正規化前のhtmlファイルが変更されている可能性があります。ここでは filemtime(string $path) 関数が使用されており、ファイルの最新の変更時刻が返されます。
-
- if(!file_exists($t2p) || @filemtime($t2p) < @filemtime($t2h) )//テンプレートファイルが変更されると、通常のphpファイルはそれに応じて更新されます
- {
- template_go($t2p,$t2h);//テンプレート変換が開始します
- }
- return $t2p;//正規化後にphpファイルに戻ります。これは次のように呼び出すことができます: include template('header' ,'hello');
- }
- ?>
コードをコピーします
3. テンプレートの変換を開始し、最初に html ファイルから読み取り、次に正規表現に置き換え、最後に php ファイルに書き込みます。
-
- function template_go($t2p,$t2h)
- {
- $str = @file_get_contents($t2h);//読み出し
- if($str === false) exit("テンプレート ファイルが見つかりません。確認してください。 ");
- $str = template_do($str);//定期的な置き換え
- @chmod($t2p,0777);
- return $str = file_put_contents($t2p, $str); //
- }
- ?>
コードをコピーします
4. 通常のルール、いくつかの比較的単純な通常の置換構文。
-
- function template_do($str)
- {
- $str = preg_replace('/([nr+])t+/s', '\1', $str);//タブを削除タブ。修飾子 /s は改行を無視しません
- $str = preg_replace('/{$(.*)}/Us', '', $str);/*{$ xx} を に置き換えます。修飾子 /U を追加する必要があり、一致できるのは 1 回のみであることに注意してください。遅延マッチング */
- $str = preg_replace('/{php (.+)}/', '', $str);/*{php xxxx} を次のように置き換えることもできます。 < ?php xxxx ?> 修飾子 /s を追加できないことに注意してください。この規則を複数回実行する場合は、改行の問題を考慮する必要があります。 */
- $str = preg_replace('/{template(.*)} /Us', '< ;?php include template\1; ?>', $str);
- /*{template(xx,yy)} は $str = preg_replace('/{include (.*)}/Us', '', $str);/*{include xx.php} に置き換えられます */
- $str = "".$str;
- // $str = preg_replace(' /s+/', ' ', $str);//ウェブページのソース コードを確認して
- return $str;
- }
- ?>
-
コードをコピー
もちろん、この機能は比較的単純なので、改善されることを願っています。
|