我從使用mysql_real_escape_string進行過處理的數據庫中提取內容。 因此,新行字符現在顯示爲「\ n」。 問題是,這個內容會顯示給< pre>標籤中的用戶,所以我不能用< br />替換\ n。用實際換行字符代碼替換 n
我想我可以用實際的utf8字符代碼替換\ n,然後在< pre>中插入結果。
somoneone可以幫助嗎?由於安全策略,不使用mysql_real_escape_string並不是真正的選擇。
謝謝。
我從使用mysql_real_escape_string進行過處理的數據庫中提取內容。 因此,新行字符現在顯示爲「\ n」。 問題是,這個內容會顯示給< pre>標籤中的用戶,所以我不能用< br />替換\ n。用實際換行字符代碼替換 n
我想我可以用實際的utf8字符代碼替換\ n,然後在< pre>中插入結果。
somoneone可以幫助嗎?由於安全策略,不使用mysql_real_escape_string並不是真正的選擇。
謝謝。
echo '<pre>'.str_replace('\n', "\n", $string).'</pre>';
這會工作爲「速戰速決」,根本原因是被轉義兩次 – Max 2010-07-19 08:35:06
數據直到我使用雙引號「\ n」'而不是單引號''\ n''出於某種原因,這才起作用。 – 2016-07-01 11:53:01
str_replace("\\n","\n",$data);
這可能有點幫助:
回聲( '測試\ NTEST'); 所示爲
測試測試
但 回波( 「測試\ NTEST」); 顯示爲
測試
測試
echo('test \ ntest');應該顯示爲test \ ntest – 2010-07-16 11:37:15
我是從已使用mysql_real_escape_string消毒一個DB拉動內容。因此,新行字符現在顯示爲「\ n」
如果您還沒有對從數據庫中拉回來的原始數據做任何處理,那麼問題在於它插入時已被「消毒」兩次。
C.
爲什麼不......
echo str_replace('\\n', PHP_EOL, "few lines\nof text here,\nblah, blah! etc!");
我有點疑惑,通常你的數據應該返回轉義。您描述它的方式,就好像數據在存儲之前經過了兩次mysql_real_escape_string() – 2010-07-16 11:34:25
實際上,您聽起來像是通過轉義兩次來過度清理數據。如果你放入'mysql_real_escape_string(「two \ nlines」);'數據庫中會有一個真正的'\ n'字符。如果你拿出數據,應該沒有必要把'\ n'替換回來。如果以這種方式保留它,那麼也可能會遇到'and「的問題。 – mvds 2010-07-16 11:36:41
也許你是php中可笑的」magic_quote「功能的受害者 - 確保你禁用了它,它只會讓那些意識到這個概念的人感到困惑 – mvds 2010-07-16 11:40:15