[英]Escape Html Text in ZF2
我有這樣的文字:
<p><strong>Lorem</strong> ipsur </p>
要在Zend Framework 2中查看沒有html標簽的文本,我該怎么辦?
我試圖把:
<?php echo $this->escapehtml($array['text']); ?>
我讀到,出於安全考慮,這樣做不好:
<?php echo $array['descrizione']; ?>
我不確定我是否理解這個問題,因為我不知道您的數組的內容。
基本上,如果您想轉義變量的內容,比如說$input
,您必須調用,如前所述
$this>escapeHtml($input)
實際上,PhpRenderer包括可用於此目的的一系列幫助器:EscapeHtml,EscapeHtmlAttr,EscapeJs,EscapeCss和EscapeUrl。
你可以在這里閱讀
另外,如果您需要更多控制權,則可以使用Zend \\ Escaper,只需兩行代碼即可轉義html ,如下所示
$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtml($input);
或轉義屬性 ,像這樣
$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtmlAttr($input);
我建議您閱讀3個鏈接,它們非常簡短,可以使您更好地了解自己的工作。
目前,escapeHtml中沒有允許某些標簽的選項。 在這些特定情況下,您需要做的就是修改返回值:
<?php
$str = $this->escapehtml($array['text']); ?>
$str = preg_replace(
array('#href="(.*)"#', '#<(/?(?:pre|a|b|br|em|u|ul|li|ol|p|strong)(\shref=".*")?/?)>#' ),
array( 'href="\1"', '<\1>' ),
$str
);
echo $str;
您可以根據需要pre|a|b|br|em|u|ul|li|ol|p|strong
部分添加/刪除標簽。 此代碼還將僅允許帶有href的錨標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.