2012-12-05 47 views
1

我有這樣一個textarea它:爲什麼從一個形式發送存儲textarea的數據增加了額外的換行符

Test can't talk<br /> 
Test 

當我將它發送到我的預覽頁我用這個:

$Comments = htmlspecialchars("$_POST[CustComments]", ENT_QUOTES); 
$Comments = str_replace("\n","<br />", $Comments); 

然後,它顯示了這個在預覽頁上:

Test can't talk<br /> 
Test 

當我回去進行編輯,在編輯頁面代碼,我有這個。

$Comments = str_replace("<br />","\n", $_POST['CustComments']); 
$Comments = htmlspecialchars($Comments, ENT_QUOTES); 

但它顯示了這一點:

Test can't talk 

Test 

這哪裏是額外的休息來自何處,我如何擺脫它?


UPDATE: %的編輯頁面我有這樣的一個建議。

$Comments = htmlspecialchars($_POST['CustComments'], ENT_QUOTES); 

這表明這一點:

Test can't talk 
<br />Test 

同樣這哪裏是額外<br />是從哪裏來的?如果我使用strreplace它會顯示這樣的

Test can't talk 

Test 

只需使用這樣的:

$Comments = nl2br($_POST['CustComments']); 

它顯示了這一點:

Test can't talk<br /> 
<br />Test 

再次隨機<br />加入。

回答

1

在視圖頁面需要使用此:

$Comments = htmlspecialchars("$_POST[CustComments]", ENT_QUOTES); 
$Comments = str_replace("\r\n","<br />",$Comments); 

在編輯頁面使用此:

$Comments = str_replace("<br />","\n",$_POST['CustComments']) 

在提交頁面:

function keepSafe($value) { 
    if (get_magic_quotes_gpc()) { 
     $value = stripslashes($value); 
    } 
    if (!is_numeric($value)) { 
     $value = "'" . mysql_real_escape_string($value) . "'"; 
    } 
    return $value; 
} 
$Comments = keepSafe($_POST['CustComments']); 

工程就像一個魅力。

+0

這工作所需的時間。由於標準改變,並且get_magic_quotes_gpc已經貶值,我找到了正確的方法。 – JukEboX

0

你爲什麼使用str_replace()?試試這個:

$Comments = nl2br($Comments); 
+0

對不起,並不能解決這個問題。 – JukEboX

相關問題