代码之家  ›  专栏  ›  技术社区  ›  DMin

从PHP生成CSV-回车将不起作用

  •  3
  • DMin  · 技术社区  · 14 年前

    基本上我不能让马车回去工作。

    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"';
    

    结果:

    以及

    echo '"Name","Age",\n\r,"Chuck Norris","70"';
    

    姓名年龄\n\rChuck Norris70

    知道怎么回事吗?

    2 回复  |  直到 14 年前
        1
  •  7
  •   Dan Heberden    14 年前

    关于CSV,见Brenton的答案。至于“为什么不起作用”的答案:

    是的,/n和类似的只在双引号中起作用:)

    echo '"Name","Age"' . "\n" . '"Chuck Norris","70"';
    

    或者(这看起来糟透了)

    echo "\"Name\",\"Age\"\n\"Chuck norris\",\"79\"";
    

    但为了可读性:

     $nl = "\n";
       echo '"Name","Age"' . $nl .  '"Chuck Norris","70"';
    
        2
  •  4
  •   Brenton Alker    14 年前

    fputcsv 将正确转义的csv行写入流,如果您试图输出到浏览器,则可以使用标准输出(stdout)流而不是文件指针。

    如。

    $list = array (
      array('Name', 'Age'),
      array('Chuck Norris', 79)
    );
    
    foreach ($list as $line) {
        fputcsv(STDOUT, $line);
    }