我有一个文本区域,用户可以输入文本和标签,并将其保存到 mysql 以供例外使用:
This is some text
<table>
<tr>
<td>
blah
blah
blah
</td>
</tr>
<table>
如果我使用:
,当我将文本输出到html页面时nl2br($text);
在包含标签的每一行的末尾都会添加换行符:
This is some text<br/>
<table><br/>
<tr><br/>
<td><br/>
blah<br/>
blah<br/>
blah<br/>
</td><br/>
</tr><br/>
<table><br/>
显然我得到验证错误,因为标签之间存在换行符,例如:
<tr><br/>
<td><br/>
如果我不使用nl2br,根本就没有换行符。我该怎么办?
答案 0 :(得分:2)
您可以随时尝试删除传递给nl2br后标记后的任何br标记。
这一个班轮可能有所帮助。
<?php
$stringToStore = str_replace('><br />', '>', nl2br($originalString));
希望这有帮助!
编辑:未经测试但为了更好地捕获html标签,您可以使用正则表达式替换。
<?php
$stringToStore = preg_replace('/(<.*>)<br\s*\\/?>/', '$1', nl2br($originalString));
正则表达式基本上说:
< >
内的所有内容捕获后跟<br />
<.*>
周围的括号表示我们可以使用 $ 1 访问的捕获组(因为它是第一个caputre组)<br />
。<br />
,<br/>
或<br>
就像我说的,这个未经测试但应该有效。