2016-12-14 61 views
0

我試過nl2br()以及所有在註釋here中列出的方法。我遇到的問題是,即使他們插入了<br/>\n仍然保留在文本中。如何用<br>代替PHP

這是我最初做:

<?php 

$stmt = $db->prepare(...) 

$stmt->execute(); 

while ($row = $stmt->fetch()) { 

    $tldr_clean = nl2br($row['tldr']); 
    $body_clean = nl2br($row['body']); 

    ?> 

    <section> 

     <h2 class="tldr"><?= $tldr_clean ?> <?= $row['score']?>/10</h2> 

     <p class="body"><?= $body_clean ?></p> 

     <p class="reviewer">Written by <?= $row['name'] ?></p> 

    </section> 

<?php 
} ?> 

假設$row['body']"Hello\nGoodbye",在HTML輸出結果是:

Hello\n 
Goodbye 

我一直在使用該方法nl2br()直接與字符串嘗試即存儲在數據庫中,並且它正常工作。所以我猜測問題是用變量調用方法?我該如何解決它?

編輯:

字符串作爲NVARCHAR2存儲在SQLite表中。

字符串存儲在數據庫:。

「Fusce履歷普魯斯tristique,efficitur悲等,tristique賭注Aliquam SAPIEN nisl,sagittis ID斯托eget,placerat ultrices nisl在的Tempus sollicitudin mauris UT feugiat Pellentesque imperdiet在risus ex dictum,sed tempus est pulvinar。Nunc nec leo fringilla diam sodales euismod sed sed odio。\ n Cras mollis,quas at iaculis semper,justo dui maximus tellus,quis dictum urna velit sit amet justo。Curabitur consectetur fringilla arcu,sit amet ultrices est dignissim eget。Etiam non dapibus justo,et semper quam。Suspendisse tristique augue sit amet gravida euismod。Ut tempus metus quis nisl sagittis volutpat。Nam rhoncus diam luctus dictum tristique。「

+6

你必須在那裏有一個文字'\ n'。檢查你的插入值,確保你實際插入了一個換行符,而不是反斜槓和n。 – Devon

+2

該文檔顯示「在所有換行符(\ r \ n,\ n \ r,\ n和\ r)之前插入了

的返回字符串。」因此,這是預期的行爲 –

+0

請在此處查看接受的答案:http: //stackoverflow.com/a/8627926/5530965也許它作爲HTML實體保存在數據庫中? –

回答

4

如果你外出echo'ing數據和您在輸出中看到的實際\n,那麼你有不是一個換行符,而是一個字面\,然後是n字符。通常,這些在代碼中被翻譯成換行符,但如果在變量中的字符串中(例如從數據庫中提取),則不是。然後,您應該在'\n'上執行str_replace(請注意單引號,因此它不會轉換爲換行符)。

這可能是由您使用類似addslashes(會隱藏\n換行符到\\n)或由數據庫自動爲數據庫自動執行某些任意的安全原因,而不是回傳。

3

只要使用str_replace<br />全部更換\n的:

$tldr_clean = str_replace("\n", '<br />', $row['tldr']); 
+0

問題仍然存在 – Tirafesi

0
$body_clean = str_replace(
    ["\r", "\n"], 
    ['', '<br>'], 
    $row['body'] 
); 
+0

問題仍然存在 – Tirafesi

+0

這是否可以通過正則表達式實現? –

+1

所以,你在這個文本字段中並沒有真正的「\ n」。你需要看看你如何將數據保存到數據庫。我想,你正在保存逃脫的數據。 –