2013-08-28 73 views
1

我有這樣的文字:逃生HTML文本在ZF2

<p><strong>Lorem</strong> ipsur&nbsp;</p> 

要看到不帶HTML標籤文本Zend框架2我該怎麼辦?

我試圖把:

<?php echo $this->escapehtml($array['text']); ?> 

我讀的安全性並不好做:

<?php echo $array['descrizione']; ?> 

回答

0

林不知道如果我理解這個問題,因爲我不知道的內容你的數組。

basicaly如果你想花葶一個變量的內容,比方說,$input,你必須調用,正如你所提到

$this>escapeHtml($input) 

實際上,PhpRenderer包括一個選擇,你可以使用這個幫手目的:EscapeHtml,EscapeHtmlAttr,EscapeJs,EscapeCss和EscapeUrl。

您可以瞭解這個here

另外,如果你想要更多的控制,你可以使用的Zend \逃避者,在兩行代碼讓你escape html,這樣

$escaper = new Zend\Escaper\Escaper('utf-8'); 
$output = $escaper->escapeHtml($input); 

escape attributes,這樣

$escaper = new Zend\Escaper\Escaper('utf-8'); 
$output = $escaper->escapeHtmlAttr($input); 

我建議你讀了3個環節,他們都非常短,會給你一個更好的理解過程站在你正在做的事情上。

0

此時在escapeHtml中沒有選項來允許某些標記。你有什麼在這些特定情況下做的是改變返回值:

<?php 
$str = $this->escapehtml($array['text']); ?> 
$str = preg_replace(
    array('#href=&quot;(.*)&quot;#', '#&lt;(/?(?:pre|a|b|br|em|u|ul|li|ol|p|strong)(\shref=".*")?/?)&gt;#'), 
    array('href="\1"', '<\1>'), 
    $str 
); 
echo $str; 

您可以添加/從部分pre|a|b|br|em|u|ul|li|ol|p|strong您的需要移除標籤。此外,這段代碼只允許使用href的錨標籤。