我有一个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代码。
答案 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
,而不是用作文本。