我已经尝试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
} ?>
Run Code Online (Sandbox Code Playgroud)
假设$row['body']是"Hello\nGoodbye",html中的输出是:
Hello\n
Goodbye
Run Code Online (Sandbox Code Playgroud)
我已经尝试将该方法nl2br()直接与存储在数据库中的字符串一起使用,并且它工作正常。所以我猜问题在于用变量调用方法?我该如何解决?
编辑:
字符串在 SQLite 表中存储为 NVARCHAR2。
存储在数据库中的字符串:
"Fusce vitae purus tristique, efficitur dolor et, tristique ante. Aliquam sapien nisl, sagittis id justo eget, placerat ultrices nisl. In tempus sollicitudin mauris ut feugiat. Pellentesque imperdiet risus at ex nec nectarum. sodales euismod sed sed odio。\n Cras mollis,quam at iaculis semper,justo dui maximustellus,quis dictum urna velit sat amet justo。Curabitur consectetur fringilla arcu,sit amet ultrices est dignissim nonquamdapi。 Suspendisse tristique augue 坐 amet gravida euismod。Ut tempus metus quis nisl sagittis volutpat。Nam rhoncus diam luctus dictum tristique。”
只需str_replace将所有的替换\n为<br />:
$tldr_clean = str_replace("\n", '<br />', $row['tldr']);
Run Code Online (Sandbox Code Playgroud)
如果您正在回显数据并\n在输出中看到实际值,那么您所拥有的不是换行符,而是\后跟n字符的文字。通常这些在代码中被转换为换行符,但如果在变量中的字符串中(例如从数据库中提取时),则不是。然后你应该做一个 str_replace '\n'(注意单引号,所以它不会被转换为换行符)。
这可能是由您在插入时使用添加\n斜杠(将换行符转换为\\n)之类的内容完成的,或者可能由数据库出于某种任意安全原因自动完成,而不是翻译回来。
| 归档时间: |
|
| 查看次数: |
5056 次 |
| 最近记录: |