在php代码中使用php include

时间:2014-01-02 20:30:15

标签: php

我有一个PHP代码会创建一个txt文件,我正在添加的问题是txt文件的内容。

我想从外部文件中包含它。

这是我到目前为止使用的代码:

<?php
$data = $_POST;
$time = time();
$filename_prefix = 'file/evidence_file';
$filename_extn   = 'txt';

$filename = $filename_prefix.'-'.$time.'-'.uniqid().'.'.$filename_extn;

if( file_exists( $filename ) ){
 # EXTREMELY UNLIKELY, unless two forms with the same content and at the same time are submitted
  $filename = $filename_prefix.'-'.$time.'-'.uniqid().'-'.uniqid().'.'.$filename_extn;
 # IMPROBABLE that this will clash now...
}

if( file_exists( $filename ) ){
 # Handle the Error Condition
}else{
  file_put_contents( $filename , '<?php include("text.php"); ?>' );
}
?>

问题是在当前代码中使用php include!它在txt文件中打印的所有内容都是:

<?php include("text.php"); ?>

如何让它显示text.php的内容?

text.php文件也包含php代码。

4 个答案:

答案 0 :(得分:4)

如上所述,您可以使用file_gets_content来获取文件的内容。

但是如果你想首先执行文件,因为它是php代码,并获得结果内容并放入文件然后(我想这就是你想要的),你必须使用缓冲区:

ob_start();

include('text.php');

$content = ob_get_contents();
ob_end_clean();

file_put_contents($filename , $content);

这样,执行php文件并将结果内容传递给文件。 如果您想了解有关输出控制功能的更多信息,请参阅documentation

答案 1 :(得分:0)

目前,您只是在file_put_contents添加一个字符串,因此它会按字面意思输入,而且无论如何include()都不是您想要的

include("text.php");加载php文件并在放入PHP时执行其内容,我不认为你想这样做。请改用file_get_contents(),如下所示:

file_put_contents($filename,file_get_contents("text.php"));

答案 2 :(得分:0)

我猜你应该这样做

file_put_contents( $filename , '<?php '. file_get_contents("text.php") .'?>' );

file_get_contents函数将文件内容作为字符串返回,而include字面上包含并评估该文件。由于您的文件是PHP文件,并且您只想将其作为字符串包含在内,因此我的解决方案应该没问题。

答案 3 :(得分:-1)

使用file_get_contents功能而不是包含。

file_put_contents($filename, file_get_contents("text.php"));

如果希望执行包含的代码,请使用include,而不是用作文本。