この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
php_template2 [2019/01/01 12:35] 管理者 |
php_template2 [2019/01/01 13:04] 管理者 [PHP 簡易的なテンプレートエンジンその2] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== PHP 簡易的なテンプレートエンジンその2(PHP5) ====== | + | ====== PHP 簡易的なテンプレートエンジンその2 ====== |
外部テンプレートファイルを読み込み、テンプレート中の専用タグと同じ名前を持った配列を内容を出力する簡易的なテンプレートエンジンです。(テンプレートエンジンなどと言っていますが配列を展開してるだけで特殊な機能はありません) | 外部テンプレートファイルを読み込み、テンプレート中の専用タグと同じ名前を持った配列を内容を出力する簡易的なテンプレートエンジンです。(テンプレートエンジンなどと言っていますが配列を展開してるだけで特殊な機能はありません) | ||
- | 注意:PHP7.xでは使えません。 | + | 2018/12/31 PHP7用のコード追加 |
イメージ | イメージ | ||
ライン 17: | ライン 17: | ||
「その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: | ライン 29: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | |||
===== サンプル ===== | ===== サンプル ===== | ||
ライン 30: | ライン 40: | ||
// ---------- 簡易テンプレートエンジン関数 ---------- | // ---------- 簡易テンプレートエンジン関数 ---------- | ||
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); |
} | } | ||
// ---------- 関数終了---------- | // ---------- 関数終了---------- |