0

我有一个我管理的博客,其中大部分是纯文本,其中包含一些 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 所包含内容的高度和宽度的情况下工作。

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

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

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

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

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

tia 的任何建议。

4

1 回答 1

0

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

你的文字:

Hello world, i want [phpcode] here

脚本:

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

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

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

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

于 2012-08-15T22:05:05.137 回答