Php nl2br将br放在html标记之间

Php nl2br将br放在html标记之间,php,Php,我有一个PHP webmail脚本,我今天从gmail收到的消息如下: $content=' <p>This is just example for MessageContent</ p>Test...<span>Test</span>Test..<span >Test</span>'; 那么我该如何解决这个问题呢?我个人认为在邮件中接受html是不好的,你应该去掉任何html,为什么 因为如果您接受要呈现的html。例如

我有一个PHP webmail脚本,我今天从gmail收到的消息如下:

$content='
<p>This is just example for MessageContent</
p>Test...<span>Test</span>Test..<span
>Test</span>';

那么我该如何解决这个问题呢?

我个人认为在邮件中接受html是不好的,你应该去掉任何html,为什么

因为如果您接受要呈现的html。例如:如果不使用来自未知来源的
htmlentities($content)
,恶意用户可能会添加 javascript并攻击你,或一个狡猾的链接和你,甚至只是一个1px的图像和得到你的IP

但是,如果你接受了风险,你就可以按原样呈现信息

<?php 
$content='
<p>This is just example for MessageContent</
p>Test...<span>Test</span>Test..<span
>Test</span>';

//Or at least sanitise abit - Remove all tags except p's an a's
$content = strip_tags($content,'<p><a>');
?>


nl2br适用于您希望不包含html的内容。

您可以将$content更改为

$content='
<p>This is just example for MessageContent</p>
Test...<span>Test</span>Test..
<span>Test</span>';

与其尝试使用nl2br格式化文本,不如将其放在包含元素和样式中,以达到预期效果?为什么要从这开始?你应该只在还不是HTML的文本上应用
nl2br
。你应该手动修复该HTML代码,那些心碎的标记是不健康的。如果它已经包含HTML,只需输出为isUhm,那么你是在抱怨nl2br()正在添加br 2 a nl?这肯定是一只虫子<代码>:)
$content='
<p>This is just example for MessageContent</p>
Test...<span>Test</span>Test..
<span>Test</span>';
echo $content;