我有这样的文字:
<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']; ?>
目前在 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 的锚标记。
我不确定我是否理解这个问题,因为我不知道你的数组的内容。
基本上,如果你想对变量的内容进行转义,比如说$input
,你必须调用,正如你提到的
$this>escapeHtml($input)
实际上,PhpRenderer 包含一系列可用于此目的的帮助器:EscapeHtml、EscapeHtmlAttr、EscapeJs、EscapeCss 和 EscapeUrl。
你可以在这里阅读
另外,如果你想要更多的控制,你可以使用 Zend\Escaper,在 2 行代码中允许你转义 html,像这样
$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtml($input);
或转义属性,像这样
$escaper = new Zend\Escaper\Escaper('utf-8');
$output = $escaper->escapeHtmlAttr($input);
我建议您阅读 3 个链接,它们很短,可以让您更好地了解自己在做什么。