包含一个包含PHP代码的PHP文件

时间:2015-03-01 13:55:51

标签: php php-include

在我的阅读器文件中,我检查$ _GET并从数据库中读取记录。

我有一个联系信息架构。保存在“contact.php”文件中。但在数据库中,我只是用“[contact]”作为文本。

以下是我为调用contact.php文件所做的工作:

$contactinfo = file_get_contents('contact.php');
$mydata = str_replace("[contact]", $contactinfo, $mydata);
return html_entity_decode($mydata);

这很完美。因为我的“contact.php”文件只包含HTML。

这是我的问题。我有另一个文件,“contactform.php”。此表单包含HTML和PHP方法,用于填充城市的选择输入。我的意思是,我的“contactform.php”文件是这样的:

<form>
Name: <input name bla bla>
Email: <input email bla bla>
City: <?php getcities(); ?>
<input submit bla bla>
</form>

我使用完全相同的方法。但我只得到:

<form>
Name: <input name bla bla>
Email: <input email bla bla>
City: <!-- <?php getcities(); ?> -->
<input submit bla bla>
</form>

我的PHP部分转换为评论行。其他部分工作正常。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果您可以使用某种正则表达式单行,eval()就可以了。

答案 1 :(得分:0)

您需要更改逻辑并将file_get_contents替换为requireinclude OR require_once OR include_once。

您需要更改代码

ob_start( );
require('contact.php');
$contactinfo = ob_get_clean( );
$mydata = str_replace("[contact]", $contactinfo, $mydata);
return html_entity_decode($mydata);

或者如果使用ob_get_contents

ob_start();
echo "You main script, before contact ";

ob_start();
echo "contact form";
$ob_2 = ob_get_contents();
ob_end_clean();

echo "and after contact";
$ob_1 = ob_get_contents();
ob_end_clean();

echo "This is OB_1: ".$ob_1."\n"; //returned "This is OB_1: You main script, before contact and after contact"
echo "This is OB_2: ".$ob_2."\n"; //returned "This is OB_2: contact form"