我想知道我的代码中缺少什么。我有一个大型表单,将所有值推送到.csv file
。有textareas
的实例,每次我放入一些文本内容并在.csv
文档中添加换行符(按Enter键),第一行后的任何文本行都会打破.csv
中的值,并开始一个新行。
我已经尝试通过php检查获取值并删除任何空格或中断,但它似乎没有工作。
有谁能告诉我我错过了什么?
HTML:
<textarea id="fianlCommentsText" name="fianlCommentsText"></textarea>
PHP:
$finalCommentsText = $_POST["finalCommentsText"];
function finalCommentsLineCheck()
{
global $finalCommentsText;
preg_replace( "/\r|\n/", "", $finalCommentsText );
}
finalCommentsLineCheck();
答案 0 :(得分:1)
\ r或\ n的“选择”需要parens:
preg_replace( "/(\r|\n)/", "", $finalCommentsText );
试试吗?
答案 1 :(得分:0)
为了允许csv中的多行字段,您需要使用"
例如:
12345,"multiline
text",another_field
如果您的文字中有引号,请使用其他引号将其转义:
12345,"27"" monitor
TFT",another_field
这样您就可以在文本中保留换行符。
答案 2 :(得分:0)
在我的情况下,我以这种方式解决了:
输出到textarea删除'\ n'字符:
<!-- this textarea will show blank carriage return and not \n characters -->
<textarea class="settinginput" id="message" name="message">
<?php echo str_replace('\n',"\n",$message); ?>
</textarea>
提交之后是如何用'\ n'替换回车符而不是扩展字符:
str_replace("\r\n",'\n',$_POST['message'])
请注意,replace函数使用双引号和单引号来保存字符串,而不对转义序列进行扩展。