2013-11-14 43 views
0

我有一個小問題,從我的數據庫中獲得的文本。 當用戶確認他們的新帖子後,它像這樣保存在數據庫中(就像我想要的那樣)。PHP將不會顯示新行

enter image description here

但在該網頁,它會忽略這些行,只是呼應了在同一行的一切。

enter image description here

這裏有點我的源代碼:

$objekttekst=str_replace("\\r\\n", "<br>", $obj->innhold); 

     $objekttittel=$obj->tittel; 
?> 
<h2><?=$objekttittel?></h2> 

<p><?=$objekttekst?></p> 

可能有人幫助我嗎?謝謝

+1

' 「\\ \\ [R N」'被替換字面'\ r \ N'到'
',而不是'\ r \ n'表示因爲你正在逃避轉義字符。 – Havenard

+0

http://stackoverflow.com/q/9457835/67332 –

回答

1

使用nl2br()函數。

$objekttekst = nl2br($obj->innhold); 
1

輸入textarea是預格式化的,這意味着它會顯示用戶輸入的任何換行符。但是,呈現的HTML(網頁瀏覽器)不會顯示來自輸入的任何換行符,除非換行符明確插入了諸如<BR>之類的標記。

您在這裏有幾個選項。當然,這三個不是你唯一的選擇,但它們是我最常使用的選項。

表textarea的預格式化文本

如果你想顯示在被賦予了輸入類似textarea的數據(objekttekst),你可以這樣做:

<h2><?=$objekttittel?></h2> 
<p><textarea><?=$objekttekst?></textarea></p> 

在用戶需要編輯條目的情況下,這將最適合您。

預格式化

如果你想顯示的文本,因爲它是你可以隨時與<PRE>...</PRE>圍繞着它。這將顯示任何換行符,縮進等。請注意,這將使輸出使用固定寬度的字體,如信使新

將換行符轉換爲<BR>標籤

使用功能nl2br()如已在另一個答覆中提到。請參閱:http://php.net/manual/en/function.nl2br.php瞭解更多信息。

附加說明...

你可能要考慮正則表達式,在許多情況下,你可能想顯示HTML頁面之前還做了一些其他修改您的數據。 nl2br()會照顧換行符,但是對於其他更復雜的修改,您應該學習正則表達式。

0

您可以<pre>標籤包圍,而不是與<br>

例更換\n您的字符串:

<?php 
    $objekttekst=$obj->innhold 
    $objekttittel=$obj->tittel; 
    ?> 
    <h2><?=$objekttittel?></h2> 
    <p><pre><?=$objekttekst?></pre></p>