如何阻止PHP前缀LF开始文件

时间:2009-07-29 09:36:17

标签: php header

我使用PHP将文本文件中的一些信息传递回用户,然后用作应用程序的输入。我正在使用以下代码段中显示的方法将文件提供给用户。

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=filename.dat');
echo $data;
exit();

我得到保存为对话很好,数据存在唯一的问题是在输出文件的开头有一个换行符,我似乎无法摆脱。

只是碰巧使用数据的应用程序对空白区域敏感,虽然很容易解决这个问题,但是迫使用户更新并不是我想要因各种原因而失败的路线。

有谁知道造成这种情况的原因,更重要的是任何解决方法。

5 个答案:

答案 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_contentsob_get_length查看在echo语句之前是否已将任何内容发送到输出。或者在echo之前使用ob_clean