似乎是一个相当简单的问题,但无法让它发挥作用。我让用户下载一个csv文件(工作正常)。
基本上我不能让回车上班。
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=search_results.csv");
echo '"Name","Age"\n"Chuck Norris","70"';
exit;
结果:名称年龄\ n“Chuck Norris”70
试过:
echo '"Name","Age",\n,"Chuck Norris","70"';
结果:名称年龄\ n Chuck Norris 70
和
echo '"Name","Age",\n\r,"Chuck Norris","70"';
结果:名称年龄\ n \ r \ nChuck Norris 70
知道出了什么问题?
答案 0 :(得分:7)
关于CSV,请参阅Brenton的回答。至于“为什么它不起作用”的答案:
Yup,/ n和类似的只能在双引号中工作:)
e.g。
echo '"Name","Age"' . "\n" . '"Chuck Norris","70"';
或(这看起来很糟糕)
echo "\"Name\",\"Age\"\n\"Chuck norris\",\"79\"";
但为了便于阅读:
$nl = "\n";
echo '"Name","Age"' . $nl . '"Chuck Norris","70"';
答案 1 :(得分:4)
作为替代方案,可能是更强大的解决方案。 PHP具有内置函数(并非总是如此)。 fputcsv会将正确转义的csv行写入流中,如果您尝试输出到浏览器,则可以使用标准输出(stdout)流而不是文件指针。
例如
$list = array (
array('Name', 'Age'),
array('Chuck Norris', 79)
);
foreach ($list as $line) {
fputcsv(STDOUT, $line);
}