2016-12-14 59 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”。你需要看看你如何将数据保存到数据库。我想,你正在保存逃脱的数据。 –