PHP - 我已阅读并使用了许多答案,但我一直在获取HTML 该页面也是如此,我该如何制止!!或者我只是愚蠢,不,不 回答。 (新的格式化版本,抱歉伙计!!!)
以下是代码:
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];
}
答案 0 :(得分:1)
在输出任何标题之前,您正在循环使用以下内容:
for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
echo $csvArr[$nLoop] . "<br />";
坚持header()
修改强>
正如我之前所做的那样,你改变了它,我仍然会让for
循环停止。我要指出的一件事是你正在呼叫function WriteCSVFile( $csvArr, $nLine )
但是你永远不会告诉我们这个fn()
是如何被调用的,可能是在这个函数输出之前有一些东西,因此你有html,如果你已经输出了一些东西,那么你的标题就不重要了
检查输出内容(HTML是什么?)然后在php代码中搜索确切的html。
答案 1 :(得分:0)
for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
echo $csvArr[$nLoop] . "\n";
如果$csvArr
的项目本身就是数组,您可能希望implode()
将值设置为一行
for( $nLoop = 0; $nLoop <= $nLine; $nLoop++ )
echo implode(',', $csvArr[$nLoop]) . "\n";
答案 2 :(得分:0)
请尝试。
header("Content-type: application/csv");
或者在调用WriteCSVFile
函数之前检查是否有任何输出。如果是这样,它将返回错误,说不能修改标题信息。