簡體   English   中英

ZF2中的轉義HTML文本

[英]Escape Html Text in ZF2

我有這樣的文字:

<p><strong>Lorem</strong> ipsur&nbsp;</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=&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的錨標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM