如何剥离所有线路断裂以生成适当的CSV



我在网站上有一个文本方面的文本方面,该网站正常工作。但是,当我从数据库中生成一个CSV(通过PHP)时,所有的线路断裂都会与结果CSV混乱。任何CSV读取器都会将从输入的线路断开为新线路。

我尝试了以下方法:

  1. 将字段封装在引号。

  2. 此:

    $field = str_replace(array('n', 'r', 'rn', 'nr'), ',', $original_field);
    
  3. 另外:

    $field = strip_tags(nl2br($original_field));
    
  4. 结合上述所有方法。

无论如何,结束结果仍然是一个混乱的CSV,它将在用户输入的任何线路中断。我已经设法阻止了文本区域的新线路休息,但是还有很多旧的提交也需要我在CSV方面进行修复。

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

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

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

$field = str_replace(array("rn", "nr", "n", "r"), ',', $original_field);

使用双引号:

$field = str_replace(array("n", "r", "rn", "nr"), ',', $original_field);

我建议使用preg_replace()而不是str_replace()。原因是rn可能有多种新线和组合,我希望您只想用一个逗号替换它们。

我还建议使用 trim()删除尾随的空白。

$field = preg_replace('/[nr]+/', ',', trim($original_field));

您必须将n和类似标签放入双引号中,否则它们将被视为简单的字符串,而不将其视为线折。

最新更新