我有一个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)。