2012-07-06 67 views
0

我有我今天收到的消息從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> 

那麼,如何解決這個問題?

+0

而不是試圖用nl2br格式化文本,豈不是更好地把它含有元素和風格,以達到預期的效果? – GordonM 2012-07-06 17:26:10

+10

爲什麼你要這個開始?你應該只在不是HTML的文本上應用'nl2br'。 – deceze 2012-07-06 17:26:29

+0

您應該手動修復該html代碼,那些破碎的心臟標記是不健康的。 – biziclop 2012-07-06 17:30:29

回答

1

我個人認爲在郵件中接受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的內容。

0

你既可以改變$內容

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

或者你可以只使用

echo $content;