如何删除所有换行符以生成正确的CSV?

Gus*_*une 11 php csv

我有一个textarea在一个正常工作的网站上提交到我的数据库.但是当我从我的数据库生成CSV(通过PHP)时,所有换行符都会破坏生成的CSV.任何CSV阅读器都会将输入中的换行符解释为换行符.

我尝试了以下方法:

  1. 将字段封装在引号中.

  2. 这个:

    $field = str_replace(array('\n', '\r', '\r\n', '\n\r'), ',', $original_field);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 这个:

    $field = strip_tags(nl2br($original_field));
    
    Run Code Online (Sandbox Code Playgroud)
  4. 结合上述所有方法.

无论如何,最终结果仍将是一个混乱的CSV,它将在用户输入的任何换行符中断开.我已经设法阻止来自文本区域的新换行符,但是还有很多遗留提交需要我在CSV端修复此问题.

为什么不起作用?我该如何解决这个问题?

Leg*_*nar 13

在接受的答案(用户user1517891)不正确之前,它将在字符串中替换两次,当有\r\n...时它将替换为两个逗号,.首先它将替换\r=> ,,然后\n=> ,.

您需要以不同的顺序使用它,如:

$field = str_replace(array("\r\n", "\n\r", "\n", "\r"), ',', $original_field);
Run Code Online (Sandbox Code Playgroud)


小智 9

使用双引号:

$field = str_replace(array("\n", "\r", "\r\n", "\n\r"), ',', $original_field);
Run Code Online (Sandbox Code Playgroud)