2011-02-28 95 views
0

我有一種表單,我在其中輸入了一個換行符,當我輸入換行符時它看起來正確,但是現在從數據庫中取出數據而不是空白時, \ n \ r字符串出現。擺脫 r n字符串

我嘗試這樣做:

$hike_description = nl2br($hike_description); 

但它不工作。有誰知道這可以解決嗎?我正在使用PHP。 這裏是發生這種情況的頁面。看到頁面的描述部分: http://www.comehike.com/hikes/scheduled_hike.php?hike_id=130

謝謝, 亞歷克斯

+0

你也有一個流浪'\''顯示在頁面上。你如何在數據庫中保存/加載數據?例如,您不希望同時清理和使用參數化查詢。 – mellamokb 2011-02-28 17:59:37

回答

1

這意味着,你有可能明文「\ n \ r'字符串在數據庫中。

嘗試顯示前消毒分貝輸出:

$sanitized_text = preg_replace('/\\[rn]/','', $text_from_db); 

(只是猜測)。

附錄

當然,作爲Col. Shrapnel指出,有一些根本性的錯誤 與數據庫中的內容(或者,它是用這樣的方式按照慣例,你不知道)。

現在,你有固定症狀部分 但它會好得多尋找數據庫中的是所有這些轉義字符 的原因。

問候

RBO

+0

爲什麼要使用資源豐富的preg_replace ?!str_replace()甚至可以這樣做:'$ sanitized_text = str_replace(array('\ r \ n','\ n \ r'),'',$ text_from_db);' – 2011-02-28 18:07:34

+1

@Shehi:在這種情況下,假設str_replace()比preg_replace()更有效,你可能是正確的。但陣列臨時不(對我來說)看起來非常有效;-) – 2011-02-28 18:18:19

+0

@shehi的例子工作 - 謝謝! – Genadinik 2011-02-28 18:26:50

0

您可以使用str_replace來清理輸入。

$hike_description = nl2br(str_replace("\r\n", "\n", $hike_description)); 
+0

「\ r \ n」(它是兩個控制字符序列:0x0D和0x0A)不會顯示在網頁上。 – 2011-02-28 17:56:14

0
$hike_description = str_replace(array('\n','\r'),'',$hike_description); 

您可能希望在以及在PHP中單引號和雙引號之間的區別讀了起來:http://php.net/manual/en/language.types.string.php

+0

謝謝,但爲什麼不工作? $ hike_description = nl2br($ hike_description); – Genadinik 2011-02-28 18:16:55

2

有誰知道這可怎麼固定?

當然。 你的代碼做不必要的轉義,很可能在向數據庫添加文本之前。
因此,不必將其替換回來,而必須找到有害的代碼並將其清除。