0

我目前正在开发一个 CMS 系统,该系统直接从 MySQL 数据库中保存的信息构建网站。

这是我遇到的问题:

  • 在 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

如果我理解正确,听起来您想要eval(),它将字符串解释为 PHP 代码,这意味着对 $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 回答