Echo html + php来自数据库

时间:2010-05-16 10:28:37

标签: php echo

我正在开发一个用HTML处理大量文本的网站,所以最近我学习了PHP并将它们移到MySQL数据库中,echo给出了特定章节的内容。现在这个工作相对较好,HTML显示正常。但是,在某些部分我已经包含了PHP函数调用,而这些似乎没有被评估 - 相反,它们只是插入到源代码中(因此对于页面查看器是不可见的),从不做任何事情。当他们是简单的.html文件时,他们确实工作。

我该如何解决这个问题?

例如,文本可能如下所示:

<?php printChapterName(); ?>
<p>Some text</p>
...
<?php showImage($name, $alt-text); ?>
...

这只是显示页面上的文字。

编辑:函数是echo:一些HTML。

3 个答案:

答案 0 :(得分:2)

这个应该做你想做的事情:(函数 evalInlinePHP 并在 preg_replace_callback 中使用它)

 $text = "<?php printChapterName(); ?> <p>Lorem ipsum</p>";
 function printChapterName(){ echo '<h1>Chapter #1</h1>'; }

 function evalInlinePHP($m)
 {
  ob_start();
  eval($m[1]);
  return ob_get_clean();
 }

 echo preg_replace_callback("/<\?php(.*)\?>/", 'evalInlinePHP', $text);
 //prints <h1>Chapter #1</h1> <p>Lorem ipsum</p>

但请注意,将 非常糟糕的想法存储在数据库中然后对其进行评估。您应该重新考虑如何存储和显示这些文本

答案 1 :(得分:1)

嗯,你正在回应那些电话,这就是为什么他们会被写入而不被解释。

我认为您应该重新考虑将数据保存在数据库中的方式。为什么在只能存储showimage($name)代码时使用<img>? 如果图像在所有页面中的相同位置(例如,如果您有与每个页面关联的图像),请在表格中使用img src创建另一列,并使用另一个PHP调用将图像输出到其位置。

例如,某些内容(这是一个粗略的例子,但你明白了):

$res = mysql_query("SELECT text, image FROM contents WHERE id_pag = ".$id);
$row = mysql_fetch_array($res);
// Output the image
echo '<img src="'.$row['image'].'" />'. $row['text'];

答案 2 :(得分:1)

使用eval()以便PHP评估来自数据库的代码。请注意,除非您是唯一负责该PHP代码的人,否则这本质上是危险的。还要确保在当前页面中定义了这些功能。