2011-04-11 84 views
0

PHP - 我已经阅读并使用了许多答案,但我也一直在获取页面的HTML
,我该如何阻止这个!!,或者我只是愚蠢的,没有不要
答案。 (新格式版本,对不起你们!)使用PHP创建CSV文件

下面是代码:

function WriteCSVFile($csvArr, $nLine) 
{ 
    header("Content-type: text/csv"); 
    header("Content-Disposition: attachment; filename=file.csv"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    header("Cache-control: private"); 
    header("Cache-control: must-revalidate, post-check=0, pre-check=0"); 

    for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
     echo $csvArr[$nLoop]; 
} 
+1

对CSV文件使用MIME类型'text/csv'。这应该会让你的浏览器把它当作一个CSV。 – 2011-04-11 04:07:01

+0

另外,请将任何代码缩进4个空格。这是不可读的。 – Amadan 2011-04-11 04:08:35

+0

感谢Amadan,我以为我做到了,下次试试hardeer。 – roydellray 2011-04-11 05:07:48

回答

1

你循环以下你输出中的所有头前:

for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo $csvArr[$nLoop] . "<br />"; 

棒,你的后header()

编辑

正如我在'之前'所做的那样,您更改了它,我仍然会保留for循环。我要指出的一件事是,你打电话function WriteCSVFile($csvArr, $nLine)

但是你永远不会告诉我们这个fn()是如何被调用的,它可能是这个函数输出的东西,因此你有html,你的头文件不会如果你已经有东西输出给用户的话。

检查什么是输出(什么HTML ??),然后在您的PHP代码中搜索确切的HTML。

+0

非常感谢,但是如果你注意到我做了这些,第一个循环对我来说就是一个虚拟调试,为了确保我有正确的信息,只是为了确保它不会引起注意,我将它评论如下: – roydellray 2011-04-11 05:00:27

+0

注意第一个循环被删除,但仍然输出HTML – roydellray 2011-04-11 05:23:52

+0

@Hans Engel - 感谢Hans,如上所述,但仍然得到HTML,我仔细检查了代码以确保数组是干净的。 – roydellray 2011-04-11 05:26:35

0
for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo $csvArr[$nLoop] . "\n"; 

如果$csvArr的项目是数组本身,你可能要值implode()到单行

for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo implode(',', $csvArr[$nLoop]) . "\n"; 
0

请尝试。

header("Content-type: application/csv"); 

或者在调用WriteCSVFile函数之前检查是否有任何输出。如果是这样会返回错误,说不能修改标题信息。