Php 从变量下载文本内容

Php 从变量下载文本内容,php,string,variables,text,download,Php,String,Variables,Text,Download,我创建了一个php脚本,它创建了一个文本字符串,并显示在屏幕上。 您知道如何将可变内容作为文本文件下载吗?我试过这样的方法: ... <body> <?php $download_me = "download me..."; header("Content-type: text/plain"); header("Content-Disposition: attachment; filename=test.txt"); echo $download_me; ?> </

我创建了一个php脚本,它创建了一个文本字符串,并显示在屏幕上。 您知道如何将可变内容作为文本文件下载吗?我试过这样的方法:

...
<body>
<?php
$download_me = "download me...";
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=test.txt");
echo $download_me;
?>
</body>
...
但这会创建一个包含整个html文档的文本文件:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>

<body>
download me...</body>
</html>

我创建了一个包含以下内容的文件:

<?php
    $download_me = "download me...";
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=test.txt");
    echo $download_me;
?>
它工作了,它作为一个txt文件下载。

这部分代码本身将完成您希望它完成的任务:

<?php
$download_me = "download me...";
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=test.txt");
echo $download_me;
?>
但是,您正在用HTML代码包装该代码。这意味着两件事:

您正在尝试在已开始发送输出后修改标题。 被回显的文本不是唯一的内容,您还输出了它周围的HTML。 第一个问题可能是在服务器日志中产生错误。如果代码悄悄地忽略了这一点并继续执行,那么第二个问题将解释您看到的输出。您看到HTML是因为您正在输出HTML


如果不想输出HTML,请从输出中删除HTML。只需使用发送文本文件响应的代码。

您发布的代码不应该这样做。您必须有一些其他代码在回显HTML。您不能在同一输出中混合下载和HTML。粘贴代码末尾的错误*/意味着所有这些代码实际上都在源代码中注释掉了。这就解释了为什么它没有达到你期望的效果…@David:sry*\只是复制粘贴失败。@make:更新的代码是一个很大的语法错误。它既不是有效的HTML,也不是有效的PHP。听起来这里的问题不是代码不起作用,但是,您缺少了一些编写PHP代码的基本介绍概念。是的,通常情况下,它可以工作,但如果您在下载的文本文件之前添加内容,则之前不能包含任何内容。这将使整个网页变成文本文件。感谢您的回复。我会尽快检查服务器日志。到你的最后一段:但是如何?我在同一个文件中使用用户输入创建整个内容。“我不能只是删除它。@make:如果此代码是较大代码文件的一部分,您将根据当前确定的下载文件与输出HTML的时间,有条件地执行此代码或其他代码。”。但是,通常最好将这些内容划分为不同的服务器端资源,因为它们会产生非常不同的响应。