プロが教える店舗&オフィスのセキュリティ対策術

外部ファイルにテンプレートと言うか、データとしてHTMLの書かれたファイルを置くとします。

そして、メインのphpのファイルで変数や定数の処理をさせて、その外部HTMLファイルを読み込ませ、HTML内に記載した変数等を表示させるとします。

// tmp.html //
<html>
<body>
<div>
<p>こんにちは{$php}です。<br>
今日は{ConstTest::CONST_TEST}ですね。</p>

<p>どうも。{$aisatsu.$php2}です。<br>
今日は{$tenki[1]}なので、悪い天気ですよ。</p>

</div>
</body>
</html>
// tmp.html ここまで //

上記のような{$変数}と言う、{ と } で囲った書き方のプログラムを良く見かけるのですが、
phpプログラム内で、どう処理させれば、表示できるのでしょうか?
また、上には書きましたが、下記のように定数のクラスファイルも外部に作って、表示させることは可能でしょうか?
そもそも、定数も{}で表示させることは可能なんでしょうか?
もうひとつ、{$a.$b}の様に文字列の入った変数をドットでつなげると言う書き方も可能でしょうか?

// main.php //
<?php
require_once('./class.php');

$php = 'アマガエル';
$aisatsu = 'こんにちわ。';
$php2 = '椎名アップル';
$tenki = array('晴れ','雨','曇り');

// 処理の仕方が解からないので、デタラメな?の部分です
$hoge = file_get_contents('./tmp.html');
echo $hoge;
// ?の部分終わり

exit;
?>
// main.php ここまで //

// class.php //
<?php
class ConstTest {

const CONST_TEST = '雨ですが、良い天気';

}
?>
// class.php ここまで //

A 回答 (3件)

「テンプレートをどう処理するか」はスクリプトをどう書くかだけの問題です。



どういう変数があるかが既知であればひとつひとつstr_replaceで置換するという方法もないわけではありません。この場合は変数の書き方もある程度自由です(スクリプトで置換できればいいので)。

$tpl = file_get_contents('contents.tpl');
$tpl = str_replace('{$abc}', $abc, $tpl);

#もちろん実際には配列+可変変数などで効率よく
#回すでしょうけど、あくまでも「例」として(汗

また、evalを使ってヒアドキュメントとして扱う(変数はphpによってparseされる)という手法もあります。

$tpl = file_get_contents('contents.tpl');
$tpl = "echo <<<TPL\r\n" . $tpl . "\r\nTPL;\r\n";
eval($tpl);

どういう書き方が出来るかは、処理方法によって異なってきます。
    • good
    • 0
この回答へのお礼

わかりやすい解答ありがとうございました。

お礼日時:2012/10/22 19:34
    • good
    • 0

そんな物自前で作らずにSmartyあたりのテンプレートエンジンでも使っておけよ。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!