Reputation: 1615
I was wondering what I am missing in my code. I have a large form that is pushing all values to a .csv file
. There are instances of textareas
and every time I put some text content in and add a line break (hit the enter-key) within the .csv
document, any line of text after the first breaks the flow of the values within the .csv
, and starts a new line.
I've tried checking taking the value via php and removing any spaces or breaks, but it doesn't seem to be working.
Can anyone tell me what I am missing?
HTML:
<textarea id="fianlCommentsText" name="fianlCommentsText"></textarea>
PHP:
$finalCommentsText = $_POST["finalCommentsText"];
function finalCommentsLineCheck()
{
global $finalCommentsText;
preg_replace( "/\r|\n/", "", $finalCommentsText );
}
finalCommentsLineCheck();
Upvotes: 0
Views: 5471
Reputation: 1449
In my case I solved in this way:
Output to a textarea removing the '\n' characters:
<!-- 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>
After submit here is how to replace the carriage returns with the '\n' not expanded characters:
str_replace("\r\n",'\n',$_POST['message'])
Note that the replace function uses double quotes and single quotes in order to save the string with no expansion for escape sequences.
Upvotes: 2
Reputation: 6581
The "choice" of \r or \n requires parens:
preg_replace( "/(\r|\n)/", "", $finalCommentsText );
Try that?
Upvotes: 2
Reputation: 11406
In order to allow multiline fields in csv, you need to quote them with "
For example:
12345,"multiline
text",another_field
In case you have quotes inside your text, just escape them with another quote:
12345,"27"" monitor
TFT",another_field
This way you can keep the newlines inside the text.
Upvotes: 0