Zend framework2 在ZF2中转义Html文本
我有这样一个文本:Zend framework2 在ZF2中转义Html文本,zend-framework2,Zend Framework2,我有这样一个文本: <p><strong>Lorem</strong> ipsur </p> 要在Zend Framework 2中查看没有html标记的文本,我该怎么办 我试着说: <?php echo $this->escapehtml($array['text']); ?> 我读到,为了安全起见,这样做是不好的: <?php echo $array['descrizione']; ?> 我
<p><strong>Lorem</strong> ipsur </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="(.*)"#', '#<(/?(?:pre|a|b|br|em|u|ul|li|ol|p|strong)(\shref=".*")?/?)>#' ),
array( 'href="\1"', '<\1>' ),
$str
);
echo $str;
您可以根据需要添加/删除零件前的标记。此外,此代码将只允许带有href的锚定标记