nl2br把html标签
问题描述:
我有我今天收到的消息从Gmail这样的网络邮件的PHP脚本之间BR:nl2br把html标签
$content='
<p>This is just example for MessageContent</
p>Test...<span>Test</span>Test..<span
>Test</span>';
如何我nl2br
打印呢?
如果我使用echo nl2br($content);
,我得到这样的结果:
<br />
<p>This is just example for MessageContent</<br />
p>Test...<span>Test</span>Test..<span<br />
>Test</span>
那么,如何解决这个问题?
答
我个人认为在邮件中接受html是不好的,你应该去掉任何html,为什么?
因为如果您接受html tobe呈现。例如:不使用来自未知来源的htmlentities($content)
,然后恶意的人可以添加 javascript和XSS攻击你,或者是一个狡猾的链接和CSRF你甚至只是一个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='
<p>This is just example for MessageContent</p>
Test...<span>Test</span>Test..
<span>Test</span>';
或者你可以只使用
echo $content;
而不是试图用nl2br格式化文本,岂不是更好地把它含有元素和风格,以达到预期的效果? – GordonM 2012-07-06 17:26:10
为什么你要这个开始?你应该只在不是HTML的文本上应用'nl2br'。 – deceze 2012-07-06 17:26:29
您应该手动修复该html代码,那些破碎的心脏标记是不健康的。 – biziclop 2012-07-06 17:30:29