2012-02-08 10 views
-6

PHPタグをエコーするには?私はこれを行うことにより、PHPタグをエコーし​​ようとしている

echo "<?php echo \"test\"; ?>"; 

結果は引用符だけで「テスト」でなければなりませんが、私のコードは動作しません。何が起こっているのかは、ページには何も表示されていませんが、ソースコードは"<?php echo "teste"; ?>"

です。私がこれをやりたい理由を知りたい人のほとんどが知りたいと思うでしょう。私は自分のテンプレートシステムを作ろうとしています。最も簡単な方法はfile_get_contentsを使用して、私が欲しいものをstr_replaceに置き換えてからechoを使用することです。

問題は、テンプレートファイルで、ページをエコーし​​たときに動作しないPHP関数をいくつか持たなければならないということです。これを行う簡単な方法がありますか?あなたが私の質問に答えるだけでも大いに役立ちます!ここで

私が達成しようとしているものの例である:

template.tpl:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>[__TITULO__]</title> 
</head> 
<body > 
<p>Nome: [__NOME__] <br /> 
Email: <a href="mailto:[__EMAIL__]">[__EMAIL__]</a><br /> 

<?php 
if ($cidade != "") {?> 
    Cidade: [__CIDADE__]<br /> 
    <?php 
} 
?> 

Telefone: ([__DDD__])&nbsp;&nbsp;[__TELEFONE__] <br /> 
Fax: 
([__DDDFAX__])&nbsp;&nbsp;[__FAX__] <br /> 
Interesse: [__INTERESSE__]<br /> 
Mensagem: 
[__MENSAGEM__] </p> 
</body> 
</html> 

のindex.php

<?php 
$cidade = "Teste"; 
$file = file_get_contents('template.php'); 

$file = str_replace("[__TITULO__]","Esse Título é téste!", $file); 
$file = str_replace("[__NOME__]","Cárlos", $file); 
$file = str_replace("[__EMAIL__]","[email protected]", $file); 

if ($cidade != "") { 
    $file = str_replace("[__CIDADE__]",$cidade, $file); 
} 

echo $file; 

?> 

私は表示されないこのすべてを解決することができますdivにコンテンツがありません。私は、コンテンツを設定した時間がdiv要素のcontent2は表示されませんコンテンツ2を設定し、私はcontent1を設定したテンプレートを交換しないようにする場合

<div id="content1">[__content1__]</div> 
<div id="content2">[__content2__]</div> 

:私はテンプレートを持って、その中に、私は2つのdivを持っているかのよう。あなたが混同してはいけません、ここでソースコードの二組を扱っている&lt;&gt;

+0

PHPマニュアルで "エスケープ"を参照してください。 –

+2

'<?php echo" teste "; ?> 'が不正な形式のHTMLであるため、レンダリングされた出力には表示されません(ソースにあるはずです)。テンプレートソリューションをお探しですか?[Twig](http://twig.sensiolabs.org/)、[Smarty](http://www.smarty.net/)、[Dwoo](http:// dwoo .org /)、[その他...](https://www.google.com/search?q=php+template+engine)私を信じて - あなたの現在のアイデアは悪いです。 OR ---可視のPHPコードスニペットをブラウザに出力しようとしていますか? –

+0

それはそうではなく、ソースページにあるかのように、echoコードをPHPコードとしてレンダリングします。 –

答えて

2

使用htmlspecialchars

> - サーブrコード(PHP、<?php ?>タグ内にあるもの)と、すべてのHTMLタグを含むクライアント(またはブラウザ)コードです。サーバーコードの出力は、ブラウザに送信されるコードです。ここでですが、実際にはPHPタグをエコーし​​ていますが、ブラウザには意味がありません。ブラウザはそれを無視して、送信されたクライアントコードを見ない限り何も表示しません。

このスタイルでテンプレートを実装するには、PHPコードを使用しないでください。結果の文字列($fileに格納されています)は、クライアントにそのまま返すのではなくPHPのように実行する必要があります。 。これを行うにはさまざまな方法があります。 1つは、文字列内のPHPタグを解析し、PHPタグに含まれていないものすべてをエコーし​​、すべての上にeval()を実行することです。

0

から<を変換します。..

関連する問題