打破我在文本區輸入保存換行符數據庫驗證碼:保存符合了preg_replace
$input = preg_replace("/(\n)+/m", '\n', $input);
考查在數據庫中輸入,換行符實際保存。
但問題是當我想要回顯出來,在輸出中不會出現換行符 ,我該如何在輸入中保留換行符,並且還將它們回顯爲 。我不想使用<pre></pre>
。
打破我在文本區輸入保存換行符數據庫驗證碼:保存符合了preg_replace
$input = preg_replace("/(\n)+/m", '\n', $input);
考查在數據庫中輸入,換行符實際保存。
但問題是當我想要回顯出來,在輸出中不會出現換行符 ,我該如何在輸入中保留換行符,並且還將它們回顯爲 。我不想使用<pre></pre>
。
您正在使用文字兩個字符序列\n
(反斜槓+ n)替換$input
中的換行符的實際序列 - 不是換行符。從數據庫讀取時,這些需要轉換回換行符。雖然我懷疑你打算把這些實際的換行符在數據庫中,應使用雙引號的字符串,而不是...
$input = preg_replace('/(\n)+/m', "\n", $input);
注意,我更換了單引號和雙第二個字符串的第一個字符串分隔符引號。 \n
是正則表達式中的一個特殊序列,用於表示換行符(ASCII 10),但它也是PHP中用於表示相同的字符轉義 - 兩者有時可能會發生衝突。
你是對的,我發現,我不得不將輸出轉換回新的行。我使用下面的代碼,它的工作原理:$ output = preg_replace(「/(\ n)+/m」,'
',$ output); –
bodesam
2012-07-10 12:59:36
我認爲PHP有解決方案:
nl2br
-
編輯字符串中的所有新行之前插入HTML換行:您可能需要更換CR/LF使它好好工作。
// Convert line endings to Unix style (NL)
$input = str_replace(array("\r\n", "\r"), "\n", $input);
// Remove multiple lines
$input = preg_replace("/(\n)+/m", '\n', $input);
// Print formatted text
echo nl2br($input);
的可能重複[如何從字符串中刪除換行符(沒有字符!)?(http://stackoverflow.com/questions/10757671/how-to-remove-line-breaks-no-字符) – kenorb 2015-03-03 00:27:39