我有一个textarea,用户可以使用BBCode和HTML代码在数据库中插入新闻。当我想在网站上显示这个新闻时,PHP脚本将BBCode转换为HTML实体并转换HTML标准保留HTML标签的新闻内容(从数据库获取)。问题是当我想使用 nl2br()函数将换行符转换为<br />
标记时,因为在{+ 1}}之后也添加了<br />
,例如:
<li>Some text</li><br />
或
<table><br />
<tr><br />
etc.
有没有办法避免这个恼人的问题?
答案 0 :(得分:1)
我正在考虑正则表达式。只有当文本没有被<p></p>
分隔时(这在我看来会更好一些),这才有效。
$formattedText = preg_replace("/(<[a-zA-Z0-9=\"\/\ ]+>)<br\ \/>/", "$1", nl2br($text));
如上所述,另一种选择是在特定标签内查找文本,并环绕<p>
标签。