2013-02-09 42 views
0

有人可以請幫我解決這個問題。nl2br()不能與我的textarea

我只是試圖顯示來自用戶的消息。該消息從textarea來到我的數據庫。我的問題是,當我輸入消息並將其格式化爲段落時,它不會以該格式顯示並將其顯示爲一個長段落。

這樣子。

要更改文檔的整體外觀,請在頁面佈局選項卡上選擇新的主題元素 。要更改快速樣本庫中可用的外觀,請使用更改當前快速樣式設置命令。 \ r \ n \ r \ n主題庫和快速樣式庫均提供 重置命令,以便您始終可以將 文檔的外觀恢復爲當前模板中包含的原始文檔。

我試着用nl2br(),並用strip_tags(),但仍然沒有運氣

中的代碼驗證消息。

// Check for message 
if (!empty ($_POST['message'])) { 
    if (mb_strlen ($_POST['message'], 'UTF-8') <= 20) { 
     $reg_errors['message'] = 'Your message must be greater than 20 characters'; 
    } else { 
     $message = mysqli_real_escape_string($dbc, $_POST['message']); 
    } 
} else { 
    $reg_errors['message'] = 'Message: This field is required.'; 
} 

這是當從數據庫

$message= $row['message']; 
$message= nl2br(strip_tags($message)); 

選擇消息呼應$消息時,它打印一個段落像上面我使用的代碼。

+1

http://stackoverflow.com/a/14786251/285587 – 2013-02-09 13:29:06

+0

正如你說的那個答案我想我在這裏正確地使用了nl2br()和mysqli_real_escape_string()。 Inst? – TNK 2013-02-09 13:42:50

+0

問題仍然沒有解決。這些\ r \ n \ r \ n字符不能用我的代碼轉換爲
標籤。 – TNK 2013-02-09 14:15:05

回答

0

從我的理解,通過使用mysqli_real_escape_string()你使它逃避反斜槓所以在交易發生時,例如\r\n變得\\r\\n,但是,如果這些已經被使用Javascript逃脫,那麼你的交易過程中到底有什麼了是\\\\r\\\\n這轉換回HTML作爲

  1. 字面反斜槓
  2. ř
  3. 字面反斜槓
  4. ñ

因此,您可能需要在添加到數據庫之前用適當的字符替換它們。這樣做你可以從各種內置功能,如preg_replace()strtr(), str_replace(),str_replace() ...

1

當您將數據添加到數據庫時過度轉義。
如果您使用的是準備好的語句,只需從您的代碼中移除mysqli_real_escape_string()調用即可。
否則,你正在做兩次 - 索姆你必須找到它發生的地方,並從你的代碼中刪除額外的mysqli_real_escape_string()調用。