我正在开发一个用HTML处理大量文本的网站,所以最近我学习了PHP并将它们移到MySQL数据库中,echo
给出了特定章节的内容。现在这个工作相对较好,HTML显示正常。但是,在某些部分我已经包含了PHP函数调用,而这些似乎没有被评估 - 相反,它们只是插入到源代码中(因此对于页面查看器是不可见的),从不做任何事情。当他们是简单的.html文件时,他们确实工作。
我该如何解决这个问题?
例如,文本可能如下所示:
<?php printChapterName(); ?>
<p>Some text</p>
...
<?php showImage($name, $alt-text); ?>
...
这只是显示页面上的文字。
编辑:函数是echo:一些HTML。
答案 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代码的人,否则这本质上是危险的。还要确保在当前页面中定义了这些功能。