2013-07-08 71 views
2

我有一個頁面可以將條目添加到幾年前創建的日誌中。然而,在本頁面的評論部分中,每次按下輸入時都會添加一行。如何在php中刪除多餘的換行符

例如,如果我進入這個並將其添加到日誌:

TEST 1           
TEST 2   
TEST 3 

這將顯示爲:

TEST 1 

TEST 2 

TEST 3 

我發現在大的PHP文件中的註釋部分,是想知道如何編輯它來消除這個問題?任何幫助將不勝感激。謝謝。

PHP代碼:

<tr><td colspan='3'>&nbsp;</td></tr> 
    <tr><td class="master-menu"><div class='mar'>*Comments:</div><TEXTAREA rows='5' cols='30' NAME='notes' onkeypress="return beta (event,letters+numbers+signs+custom)"><?php echo $notes; ?></textarea></div> 

PHP代碼,其中$註解顯示爲:

echo 「<input name =’defaultcomm’ type =’hidden’ value =’$notes’>」; 
    $headnotes = $notes; 
    $notes = str_replace(「\\」,」」,$getrow[‘Notes’]); 
    $notes = str_replace(「'」,」’」,$notes); 
    $notes = ereg_replace(「[\n\r]+」,」\n」,$notes); 
+0

看起來像你正在替換每個換行符,每個回車換行符換行。這意味着如果你在某些機器上得到「\ n \ r」,你會得到兩條換行符。 (還應該注意的是,使用ereg_replace在PHP 5.3之前不鼓勵使用) – SamHuckaby

+0

@samhuckaby如何更改我的當前代碼以完全按照輸入的內容獲取文本? –

+0

@SamHuckaby感謝你的提示,它只是這是很早以前創建的。 –

回答

2
$notes = ereg_replace(「[\n\r]+」,」\n」,$notes); 

這行代碼創建了兩個換行符,因爲要更換兩/ n和/ R與/ n,您正在打印的行可能每個都有一個結束。導致你的雙新行

ereg_replace現在根據documentation,你可以嘗試棄用str_replace("\s\s", "\n", $notes)

編輯最後的答案是這樣的:

$notes = trim(preg_replace('/\r\r+/', '<br>', $sqlresult['Notes'])); 
0

開始這個答案了,因爲其他信息沒有解決。

我不知道這是否與那裏的Windows風格的引號有關。嘗試複製和粘貼到位現有代碼的下面的代碼看起來是一樣的:

echo "<input name ='defaultcomm' type ='hidden' value ='$notes'>"; 
$headnotes = $notes; 
$notes = str_replace("\\","",$getrow['Notes']); 
$notes = str_replace("'","'",$notes); 
$notes = ereg_replace("[\n\r]+","\n",$notes); 

然後讓我知道如果你得到同樣的事情,或者一個新的錯誤。

+0

它仍然給我同樣的錯誤。 –

+0

@omarK給了上面的一個嘗試。它可能證明是有用的。 – SamHuckaby