2016-10-25 136 views
0

我在想我的代碼中缺少什麼。我有一個大型表單將所有值推送到.csv file。有textareas的實例,每當我在.csv文檔中放入一些文本內容並添加換行符(敲入輸入鍵)時,第一行之後的任何一行文本都會中斷.csv中的值的流動,並開始一條新線。PHP - 從Textarea中刪除換行符

我試着檢查通過PHP採取的價值和刪除任何空格或休息,但它似乎並沒有工作。

誰能告訴我我失蹤了什麼?

HTML:

<textarea id="fianlCommentsText" name="fianlCommentsText"></textarea> 

PHP:

$finalCommentsText = $_POST["finalCommentsText"]; 
function finalCommentsLineCheck() 
    { 
     global $finalCommentsText; 
     preg_replace("/\r|\n/", "", $finalCommentsText); 
    } 
    finalCommentsLineCheck(); 

回答

1

\ R或\ n的 「選擇」,需要的括號:

preg_replace("/(\r|\n)/", "", $finalCommentsText); 

嘗試嗎?

+0

我現在就試試吧! –

+0

不幸的是,這並沒有奏效。 –

+0

AH,dagnabbit,錯字...現在修復答案。 – WEBjuju

0

爲了讓在CSV多領域,你需要"

例如引述他們:

12345,"multiline 
text",another_field 

如果你有你的文字引號內,剛剛逃脫他們與另一句名言:

12345,"27"" monitor 
TFT",another_field 

這樣您就可以在文本中保留換行符。

+0

對不起,我沒有把握你想要解釋的內容。這是一個輸入,所以我不會在用戶寫入時事先訪問,但是,你是說我將變量推向.cvs的部分需要用引號引起來,像這樣? $ csvData = $ firstName。 「,」。 $ lastName。 「,」。「$ homeAddress」 –

+1

是的,在將多行字段寫入csv之前用雙引號括起來 - 這樣就可以保持用戶輸入的換行符。 –

+0

@theodoresteiner - Danny_ds建議您不再刪除\ r和\ n,而是更新您的csv保存代碼以允許保存它。你可以在你的csv中換行,你只需要正確地「逃避」它們,這樣它們就不會破壞csv。你應該看看http://php.net/fputcsv這將幫助你逃脫。 – WEBjuju

0

在我來說,我用這種方式解決:

輸出到一個文本去掉「\ 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']) 

注意,替代函數使用雙引號和單引號爲了節省字符串沒有擴張轉義序列。