Zend framework2 在ZF2中转义Html文本

Zend framework2 在ZF2中转义Html文本,zend-framework2,Zend Framework2,我有这样一个文本: <p><strong>Lorem</strong> ipsur&nbsp;</p> 要在Zend Framework 2中查看没有html标记的文本,我该怎么办 我试着说: <?php echo $this->escapehtml($array['text']); ?> 我读到,为了安全起见,这样做是不好的: <?php echo $array['descrizione']; ?> 我

我有这样一个文本:

<p><strong>Lorem</strong> ipsur&nbsp;</p>
要在Zend Framework 2中查看没有html标记的文本,我该怎么办

我试着说:

<?php echo $this->escapehtml($array['text']); ?>
我读到,为了安全起见,这样做是不好的:

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

我不确定我是否理解这个问题,因为我不知道你们数组的内容

基本上,如果您想对变量的内容进行scape,比如说,$input,您必须调用,正如您所提到的

$this>escapeHtml($input)
实际上,PhpRenderer包含一系列可用于此目的的帮助程序:EscapeHtml、EscapeHtmlAttr、EscapeJs、EscapeCss和EscapeUrl

你可以看看这个

另外,如果您想要更多的控制,您可以使用Zend\Escaper,它在两行代码中允许您这样做

$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtml($input);
$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtmlAttr($input); 
或者像这样

$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;
您可以根据需要添加/删除零件前的标记。此外,此代码将只允许带有href的锚定标记