0

私は現在、MySQL データベースに保存された情報から直接 Web サイトを構築する CMS システムに取り組んでいます。

私が抱えている問題は次のとおりです。

  • CMS 内で、ユーザーはテンプレートのコーディングを入力します
  • サイトのフロントエンド (frontend.php) は、レイアウトが保存されている変数 ($template_header) を呼び出します。
  • また、フロントエンドは、データベースからメニュー コードを取得して変数 $menu_code を作成します。これも CMS 経由で保存されています。
  • テンプレート コードの内部では、この変数のブレークが必要です。frontend.php によって実行されると、この変数が取得されます。

これは私が試してきたことです:

frontend.php 内:

echo $template_header;

$template_header の内部:

<tr><td><center>'.$menu_code.'</center></td></tr>

IE で frontend.php を実行すると、次のようになります。

<tr><td><center><script>rest of menu coding in here</script></center></td></tr>

実行すると次のようになります。

<tr><td><center>'.$menu_code.'</center></td></tr>

テキストのように表示されます。これはおそらく単純な問題ですが、このプロジェクトの締め切りが迫っているので、どんなアドバイスも大歓迎です。ありがとう

4

3 に答える 3

3

私があなたを正しく理解していれば、単純な置き換えでうまくいくでしょう:

$template_data = "<tr><td><center>{%REPLACE_WITH_CONTENT%}</center></td></tr>";
$template_data = str_replace("{%REPLACE_WITH_CONTENT%}", $menu_code, $template_data);
于 2009-06-27T00:37:28.580 に答える
1

私があなたを正しく理解していれば、文字列を PHP コードとして解釈するeval()が必要なようです。つまり、$menu_code への参照は、テキストではなく PHP として扱われます。

マニュアルから:

<?php
  $string = 'cup';
  $name = 'coffee';
  $str = 'This is a $string with my $name in it.';
  echo $str. "\n";
  eval("\$str = \"$str\";");
  echo $str. "\n";
?>

以下を出力します

This is a $string with my $name in it.
This is a cup with my coffee in it.

警告!!!!

コメントで指摘されているように、このメソッド (eval()) は重大なセキュリティ問題への扉を開きます。このメソッドは、非常に危険な任意のコードを評価します。

于 2009-06-27T00:19:24.483 に答える
-1

あなたが探しているように見えるものは次のとおりです。

eval( $menu_code );
于 2009-06-27T00:20:01.110 に答える