ホームページ >バックエンド開発 >PHPチュートリアル >PHPテンプレート関数の通常の実装コード

PHPテンプレート関数の通常の実装コード

WBOY
WBOYオリジナル
2016-07-25 09:03:25905ブラウズ
  1. function template($tpl = 'index',$dir = 'hello')

  2. {
  3. if(!file_exists($pd = TPL_PATH.$dir.'/ '))@mkdir($pd,0777) または die("$pd ディレクトリの作成に失敗しました");//cache/tpl/hello/
  4. if(!file_exists($td = TPL.$dir.'/' など) ) )@mkdir($td,0777) または die("$td ディレクトリの作成に失敗しました");//data/tpl/hello/

  5. $t2p = $pd.$tpl など.' .php';//cache/tpl/hello/index.php

  6. $t2h = $td.$tpl.'.html';//html テンプレート ファイルの通常の変換後に形成された php ファイルファイル (例: data/tpl/hello/index.html
  7. ?>

コードをコピー

) 2. 定期的な変換が必要になるのはどのような場合ですか?正規化後のphpファイルが存在しないか、正規化前のhtmlファイルが変更されている可能性があります。ここでは filemtime(string $path) 関数が使用されており、ファイルの最新の変更時刻が返されます。

  1. if(!file_exists($t2p) || @filemtime($t2p) < @filemtime($t2h) )//テンプレートファイルが変更されると、通常のphpファイルはそれに応じて更新されます
  2. {
  3. template_go($t2p,$t2h);//テンプレート変換が開始します
  4. }
  5. return $t2p;//正規化後にphpファイルに戻ります。これは次のように呼び出すことができます: include template('header' ,'hello');
  6. }
  7. ?>
コードをコピーします

3. テンプレートの変換を開始し、最初に html ファイルから読み取り、次に正規表現に置き換え、最後に php ファイルに書き込みます。

  1. function template_go($t2p,$t2h)
  2. {
  3. $str = @file_get_contents($t2h);//読み出し
  4. if($str === false) exit("テンプレート ファイルが見つかりません。確認してください。 ");
  5. $str = template_do($str);//定期的な置き換え
  6. @chmod($t2p,0777);
  7. return $str = file_put_contents($t2p, $str); //
  8. }
  9. ?>
コードをコピーします

4. 通常のルール、いくつかの比較的単純な通常の置換構文。

  1. function template_do($str)
  2. {
  3. $str = preg_replace('/([nr+])t+/s', '\1', $str);//タブを削除タブ。修飾子 /s は改行を無視しません
  4. $str = preg_replace('/{$(.*)}/Us', '', $str);/*{$ xx} を に置き換えます。修飾子 /U を追加する必要があり、一致できるのは 1 回のみであることに注意してください。遅延マッチング */
  5. $str = preg_replace('/{php (.+)}/', '', $str);/*{php xxxx} を次のように置き換えることもできます。 < ?php xxxx ?> 修飾子 /s を追加できないことに注意してください。この規則を複数回実行する場合は、改行の問題を考慮する必要があります。 */
  6. $str = preg_replace('/{template(.*)} /Us', '< ;?php include template\1; ?>', $str);
  7. /*{template(xx,yy)} は $str = preg_replace('/{include (.*)}/Us', '', $str);/*{include xx.php} に置き換えられます */
  8. $str = "".$str;
  9. // $str = preg_replace(' /s+/', ' ', $str);//ウェブページのソース コードを確認して
  10. return $str;
  11. }
  12. ?>
コードをコピー

もちろん、この機能は比較的単純なので、改善されることを願っています。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。