2012-04-24 14 views
0

私はSmartyテンプレートと組み合わせてPHPを使用して、ページサーバーサイドを生成しています。現在、次のようにページをロードしています。PHP + Smarty:PHP + HTMLを文字列に解析しますか?

$smarty->assign('app', file_get_contents("some_content.php")); 

一部のコンテンツには、HTMLタグとその内部にコードが含まれています。

私が定義した特定の機能が利用できるように、このファイル内のPHPコンテンツを現在のスコープ(ファイルを読み込んでいるスクリプトのもの)にしたいと思います。私はどうしたらいいのですか?私が見つけることができるすべての情報は、HTML/PHP混合物に対処できないように見えるeval(...)関数に関するものです:目的を達成するためにfind/eval/replace操作を実行する必要がありますか?結果、またはこれを行うよりエレガントな方法がありますか?

答えて

1

、このコードの短いスニペットは、あなたが何かが一般的に間違っている番組:)

を掲載しかし、それにもかかわらず、あなたは次のようにして達成しようとしているものは何でも達成することができます:

ob_start(); 
include("some_content.php"); 
$result = ob_get_clean(); 
$smarty->assign('app', $result); 
+0

ありがとうEugene、私はあなたのコードをとり、parse_in_scopeという素敵な関数にしました。引数は解析するファイルで、戻り値は$ resultです。完璧に動作します、ありがとう! –

+0

PS、スニペットで「一般的に間違っている」と思いますか?コードは、より大きな問題のカプセル化のビットですが、私はあなたが思っていることを聞きたいと思います。^)。 –

+0

私にとっては、評価されたphp/htmlコードをSmarty変数に割り当てることをどうにかして正当化する唯一の状況は、 "現状の"第三者コードを使用しようとする試みです:) – Eugene

0

smartyタグをそのままスマートテンプレートに表示するには、{literal} ... {/ literal} smartyタグを使用できます。これは、Javaスクリプトやその他の特定のコンテンツを転送するために使用されていました。