如何在一个文本块中插入然后执行PHP代码(从MySQL检索后)?

时间:2012-08-15 21:51:01

标签: php mysql include preg-replace eval

我有一个我管理的博客,主要是纯文本,其中包含一些HTML。在检索该博客的文本以供显示时,我想在该文本中执行一行PHP代码,同时希望避免在我的数据库中放置PHP代码。我使用MySQL。

在大多数情况下,PHP代码类似<? include "phpfile.php"; ?>。我会用它来插入增强功能,如民意调查,幻灯片等等。

过去,我依靠iframe来保存PHP文件。

This is the blog text. <a id='marker'></a> 
This is the second part of the blog text.

我使用“preg_replace()”将我的标记(<a id='marker'></a>)替换为iframe的代码。这产生以下内容,我用PHP回到我的页面:

This is the blog text. <iframe src='phpfile.php'></iframe>
This is the second part of the blog text.

这很好用,但我希望能够在没有必须猜测iframe内容的iframe的高度和宽度的约束下工作。

在阅读其他主题/问题时,我考虑过这些:

  • 用户拥有后将PHP代码插入我的数据库     进入他的博客(坏主意)

  • 在用代码替换“标记”后,使用“eval”以某种方式执行我的PHP代码?我不确定如何一步到位。我想我必须做下一个方法。 (我认为应该尽可能避免“eval()”!!!)

  • 将博客文本分成两部分(保存在变量中)。我可以用include "phpfile.php";分隔连续的“echo”语句(每个博客部分一个)。我不确定这对我的服务器有多大的内存密集 - 我会处理大约50kb的文本块。

除了最后一种方法之外,我觉得必须有一种更简单的方法来插入PHP代码并执行它。

任何建议。

1 个答案:

答案 0 :(得分:0)

你可以简单地使用str_replace来解决这个问题:

你的文字:

Hello world, i want [phpcode] here

脚本:

<?php $text = str_replace( "[phpcode]", phpcode(), $text);

然后在您的代码中定义phpcode()并执行您想要的任何操作。

您也可以使用正则表达式更改此项,并将“[]”之间的文本替换为函数名称:

Hello world,我想在这里[php:functionName]