この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
php_template2 [2019/01/01 12:35] 管理者 |
php_template2 [2019/01/02 08:09] (現在) 管理者 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== PHP 簡易的なテンプレートエンジンその2(PHP5) ====== | + | ====== PHP 簡易的なテンプレートエンジンその2 ====== |
外部テンプレートファイルを読み込み、テンプレート中の専用タグと同じ名前を持った配列を内容を出力する簡易的なテンプレートエンジンです。(テンプレートエンジンなどと言っていますが配列を展開してるだけで特殊な機能はありません) | 外部テンプレートファイルを読み込み、テンプレート中の専用タグと同じ名前を持った配列を内容を出力する簡易的なテンプレートエンジンです。(テンプレートエンジンなどと言っていますが配列を展開してるだけで特殊な機能はありません) | ||
- | 注意:PHP7.xでは使えません。 | + | テンプレートはテキストとして読み込んでpreg_replaceで文字置換しているので処理速度は低速でPHP構文も使えません。しかしテンプレート中でPHPが使えないのでPHP構文エラーによるトラブルはありません。 |
+ | |||
+ | 2018/12/31 PHP7用のコード追加 | ||
+ | ----- | ||
イメージ | イメージ | ||
ライン 17: | ライン 20: | ||
「その2」となっていますが[[php_template|前回]]とはコンセプトが違い、できるだけ特殊な機能は一切含まずシンプルに入力されたデータを出力するようにしましたので関数本体はたった3行だけです。 | 「その2」となっていますが[[php_template|前回]]とはコンセプトが違い、できるだけ特殊な機能は一切含まずシンプルに入力されたデータを出力するようにしましたので関数本体はたった3行だけです。 | ||
+ | <code php> | ||
+ | function template_engin2($data,$array){ | ||
+ | return preg_replace_callback('/\{\{(.*?)\}\}/',function($match)use($array){return $array[$match[1]];}, $data); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ※PHP5.xなど上記が動作しない場合は下記を使用 | ||
<code php> | <code php> | ||
function template_engin2($data,$array){ | function template_engin2($data,$array){ | ||
ライン 22: | ライン 32: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | |||
===== サンプル ===== | ===== サンプル ===== | ||
ライン 30: | ライン 43: | ||
// ---------- 簡易テンプレートエンジン関数 ---------- | // ---------- 簡易テンプレートエンジン関数 ---------- | ||
function template_engin2($data,$array){ | function template_engin2($data,$array){ | ||
- | return preg_replace('/\{\{(.*?)\}\}/e','$array[\'$1\']' , $data); | + | return preg_replace_callback('/\{\{(.*?)\}\}/',function($match)use($array){return $array[$match[1]];}, $data); |
} | } | ||
// ---------- 関数終了---------- | // ---------- 関数終了---------- |