Php 如何“转义”输出zf1?

Php 如何“转义”输出zf1?,php,zend-framework,Php,Zend Framework,如何转义字符串的输出以使搜索行上的js不起作用?在Zend Framework1v中。1.12.3 <div id="search-box"> <input type="text" placeholder="<?php echo $this->languageText('TEXT_SEARCH_OUR_SITE',"Search Our Site"); ?>" name="query" id="query" />

如何转义字符串的输出以使搜索行上的js不起作用?在Zend Framework1v中。1.12.3

    <div id="search-box">
        <input type="text" placeholder="<?php echo $this->languageText('TEXT_SEARCH_OUR_SITE',"Search Our Site"); ?>" name="query" id="query" />
        <div class="search-box-bk"></div>
    </div>
我试过了,但没用

placeholder="<?php echo $this->escape($this->languageText('TEXT_SEARCH_OUR_SITE',"Search Our Site"));

遗憾的是,Zend 1在默认情况下没有良好的转义机制。->escape仅使用标准PHP方法htmlspecialchars

您可以通过获取视图并使用方法setEscape'htmlentities'setescaparray'Class/Object','method'来设置要在控制器中使用的转义方法

回应置评

在我的一个项目中,我使用了Zend2 Escaper。首先,我将Escaper复制到我在库中的文件夹中,我将其重命名为Adx_Escaper,以便它适合现有库-我很懒;。接下来,我创建了ViewHelper resources.view.helperPath.Adx\u view\u Helper=Adx/view/Helper/application.ini,内容如下:

class Adx_View_Helper_Escaper extends Zend_View_Helper_Abstract
{
  protected $escaper = null;

  public function Escaper()
  {
    if ($this->escaper === null) {
        $this->escaper = new Adx_Escaper();
    }
    return $this;
  }

  public function html($string)
  {
    return $this->escaper->escapeHtml($string);
  }
/* ... */

然后我可以直接使用$this->escaper->html'SomeText',现在我看到,在构造函数中返回escaper会更简单,但它的工作方式是这样的。

谢谢。在我的任务中,->逃跑不起作用。我想了很多,于是产生了使用Zend Framework 2中的Zend\Escaper的想法。谷歌,发现我不是唯一一个想到这一点的人:-现在我会考虑你的话,同时考虑Zend\Escaper。您如何看待ZF1中Zend\Escaper的集成?@AgentSmith我在一个项目中使用了Zend2 Escaper。答案中添加了示例。也许会有用;