PHP replace double line breaks with <br>


PHP replace double line breaks with <br>

我有一个textarea字段,允许用户在其中键入纯文本或HTML。

我使用HTMLPurify清理HTML,但我想添加一个功能来帮助不了解HTML(因此使用纯文本)的用户:将换行符('n'n'r'r'n'r'r'n)转换为<br>。如果有2对双线中断,则将其转换为2个<br> s等

基本上:

Hi, this is some text with a SINGLE linebreak after it.
Here's some more text.
This is some text following a double line break.

将变成这样:

Hi, this is some text with a SINGLE linebreak after it.Here's some more text.
This is some text following a double line break.

例如,使用nl2br()会导致使用HTML变得困难。。

<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>

已转变为

<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>

这导致在不应该有的情况下有额外的项目符号。

nl2br适合您吗?http://php.net/manual/en/function.nl2br.php

它可能是HTMLPurify,而不是尝试strip_tags()并使用nl2br(),如果这有效,那么就是HTMLPurify导致了问题。

您也可以在使用HTMLPurify之前尝试nl2br(),这样您就可以在使用HTML Purify之前将所有'n'r转换为<br />,并尊重添加的<br />

我不久前找到了一个解决方案,现在我正在回答我的一个问题。HTMLPurify有一个"自动分段"选项

AutoFormat.AutoParagraph

尝试nl2br()。

nl2br—在字符串中的所有换行符之前插入HTML换行符

返回带有'<br/>'或'<br>'插入所有换行符之前(''r''n、''n''r、''n和''r)。