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


How to insert and then execute PHP code within a block of text (after retrieval from MySQL)?

我管理着一个博客,主要是纯文本,里面有一些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 所包含内容的高度和宽度的限制下工作。

在阅读其他线程/问题时,我考虑了这些:

  • 在用户有 进入他的博客(坏主意)

  • 在我用代码替换我的"标记"后,使用"eval"以某种方式执行我的 PHP 代码?我不确定我将如何一步到位地做到这一点。我想我将不得不做类似下一个方法的事情。(我认为应该尽可能避免使用"eval()!!)

  • 将博客文本分成两部分(保存在变量中)。我可以做连续的"echo"语句(每个博客部分一个),用include "phpfile.php";分隔。我不确定这对我的服务器来说内存密集程度 - 我会处理,比如说,~50kb 的文本块。

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

TIA的任何建议。

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

您的文本:

Hello world, i want [phpcode] here

脚本:

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

然后在代码中定义 phpcode() 并做任何你想做的事情。

您还可以使用正则表达式更改此设置,并将"[ ]"之间的文本替换为函数名称:

你好世界,我想要[php:functionName]在这里