我有一个textarea在一个正常工作的网站上提交到我的数据库.但是当我从我的数据库生成CSV(通过PHP)时,所有换行符都会破坏生成的CSV.任何CSV阅读器都会将输入中的换行符解释为换行符.
我尝试了以下方法:
将字段封装在引号中.
这个:
$field = str_replace(array('\n', '\r', '\r\n', '\n\r'), ',', $original_field);
Run Code Online (Sandbox Code Playgroud)这个:
$field = strip_tags(nl2br($original_field));
Run Code Online (Sandbox Code Playgroud)结合上述所有方法.
无论如何,最终结果仍将是一个混乱的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)