我在显示保存在某处的某些信息时会使用nl2br
,但是当使用HTML标记时,我不想为它们添加<br>
标记。
例如,如果我使用
<table>
<th></th>
</table>
它将转换为
<table><br />
<th></th><br />
</table><br />
这为这张桌子留出了很多空间。
何可以为其他非HTML内容添加断行标记?
感谢。
答案 0 :(得分:6)
我也有同样的问题,
我制作了这段代码,在每一行的末尾添加<br />
,除非该行以html标记结尾:
function nl2br_save_html($string)
{
if(! preg_match("#</.*>#", $string)) // avoid looping if no tags in the string.
return nl2br($string);
$string = str_replace(array("\r\n", "\r", "\n"), "\n", $string);
$lines=explode("\n", $string);
$output='';
foreach($lines as $line)
{
$line = rtrim($line);
if(! preg_match("#</?[^/<>]*>$#", $line)) // See if the line finished with has an html opening or closing tag
$line .= '<br />';
$output .= $line . "\n";
}
return $output;
}
答案 1 :(得分:2)
您只需关闭代码即可替换结束标记和换行符:
$str = str_replace('>
', '>', $str);
答案 2 :(得分:0)
我认为你的问题是错误的。如果您正在输入
<table>
<th></th>
</table>
进入文本区域然后无论你做什么它都会包含<br />
。因为这是nl2br
应该做的事情。