我使用PHP将文本文件中的一些信息传递回用户,然后用作应用程序的输入。我正在使用以下代码段中显示的方法将文件提供给用户。
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=filename.dat');
echo $data;
exit();
我得到保存为对话很好,数据存在唯一的问题是在输出文件的开头有一个换行符,我似乎无法摆脱。
只是碰巧使用数据的应用程序对空白区域敏感,虽然很容易解决这个问题,但是迫使用户更新并不是我想要因各种原因而失败的路线。
有谁知道造成这种情况的原因,更重要的是任何解决方法。
答案 0 :(得分:3)
正如我在问题的评论中已经说过的那样:
您
$data
包含该换行符,或者在该代码段之前有一些内容可以执行此操作。在打开PHP块之前可能是换行符。
答案 1 :(得分:1)
可能$ data包含换行符。 寻找包括
答案 2 :(得分:1)
据推测,额外的换行符会以某种方式进入$data
。如果你无法解决这个问题,你可以先回复trim()数据。
您可以发布$data
的设置方式吗?
答案 3 :(得分:1)
只是另外一点。
如果您正在处理一个项目,在该项目中您无法识别具有前导或尾随换行符的文件,新行,回车只需在标题之前调用以下代码:
//Loop through any open buffers and nuke them.
while(@ob_end_clean());
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=filename.dat');
echo $data;
exit();
这可能会对依赖于这些缓冲区的代码产生一些意想不到的副作用,但却是彻底清除输出缓冲区的有效方法。
答案 4 :(得分:0)
也许您可以使用ob_get_contents
或ob_get_length
查看在echo
语句之前是否已将任何内容发送到输出。或者在echo
之前使用ob_clean
。