如何使用php将字符串下载到浏览器?不是文本文件

如何使用php将字符串下载到浏览器?不是文本文件,php,text,download,text-files,Php,Text,Download,Text Files,我的问题是,我有一个字符串,它是从数据库查询、时间戳和其他随机事件生成的,并且总是不同的,所以我没有“文件”可下载。如何在浏览器中将生成的字符串作为.txt文件下载给用户?我知道您可以使用标题将文件下载到浏览器中,因此可能类似于以下内容: $result = 'Generated string that is different every time. 20121107160322'; header("Content-Type: text/plain"); header("Content-Di

我的问题是,我有一个字符串,它是从数据库查询、时间戳和其他随机事件生成的,并且总是不同的,所以我没有“文件”可下载。如何在浏览器中将生成的字符串作为
.txt
文件下载给用户?我知道您可以使用标题将文件下载到浏览器中,因此可能类似于以下内容:

$result = 'Generated string that is different every time. 20121107160322';

header("Content-Type: text/plain");
header("Content-Disposition: attachment; content=$result");
header("Content-Length: " . strlen($result));
$result = 'Generated string that is different every time. 20121107160322';
$filename = 'result_file.txt';

header("Content-Type: text/plain");
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Length: " . strlen($result));
echo $result;
exit;

显然,这不起作用,但我甚至不知道从何处开始。

您几乎成功了,您只是缺少将字符串实际输出到浏览器,并为其提供一个文件名,浏览器可以使用该文件名提示用户,所以请执行以下操作:

$result = 'Generated string that is different every time. 20121107160322';

header("Content-Type: text/plain");
header("Content-Disposition: attachment; content=$result");
header("Content-Length: " . strlen($result));
$result = 'Generated string that is different every time. 20121107160322';
$filename = 'result_file.txt';

header("Content-Type: text/plain");
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Length: " . strlen($result));
echo $result;
exit;

哇,太好了。一个问题,你为什么把
退出?确保在回显文件后不再运行php代码,因为如果某些代码输出任何内容,将进入文件并导致问题。您可以跳过
退出
,但确保以下代码不会向浏览器输出任何内容。另外,在php脚本没有结束之前,浏览器将继续下载文件,因此在您完成回送文件以结束脚本(对于
退出
调用)后效果更好。如果我希望在下载后执行更多代码,该怎么办。为什么我必须在这一点上停止所有程序的执行?这是不可能的吗?我知道通常当你点击“下载”时,页面不会重新加载。好的,但是,如果我想在下载后将错误消息输出到错误日志中,该怎么办?如果我退出,我不能那样做。