我已经尝试过nl2br()以及注释这里中列出的所有方法。我遇到的问题是,即使他们插入了<br/>,\n仍然保留在文本中。
这就是我最初做的事情:
<?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表中。
存储在数据库中的字符串:
“弗斯维特普劳斯三位一体,功效多罗等,三位一体。[医]皂甙,矢状体,羊角。在青蒿中。无菌的不需要的饮食使人吃得很香。Nunc nec leo fringilla diam sodales euismod sed odio.\n Cras mollis,quam at iaculis semper,justo dui maximus tellus,quis dictum urna velit。库拉比图尔,神圣的边缘,坐在一起,最重要的是。Etiam non dapibus justo,et semper quam.苏斯本斯三位一体坐同孕妇。[医]矢状矢状体炎。南红-“
发布于 2016-12-14 19:38:11
如果您正在回显数据,并且在输出中看到了一个实际的\n,那么您所拥有的不是换行符,而是文字\,后面是n字符。通常,如果在代码中转换为换行符,但是如果在变量中使用字符串(例如从数据库中提取时),则不会。然后,您应该在'\n'上执行一个'\n'(注意单引号,这样它就不会被转换成换行符)。
这很可能是由您在插入时使用类似加号(将\n换行符隐藏到\\n)这样的操作完成的,或者可能是由数据库出于某种任意安全原因自动完成的,而不是返回。
发布于 2016-12-14 19:12:48
只需使用str_replace将所有的\n替换为<br />。
$tldr_clean = str_replace("\n", '<br />', $row['tldr']);发布于 2016-12-14 19:13:32
$body_clean = str_replace(
["\r", "\n"],
['', '<br>'],
$row['body']
);https://stackoverflow.com/questions/41150331
复制相似问题