在CakePHP中解码HTML实体时,从文章标题中删除HTML

在CakePHP中解码HTML实体时,从文章标题中删除HTML,php,cakephp,Php,Cakephp,我举了以下示例,说明用户可能会在字段中键入帖子名称: 他们是很棒的人 现在,因为这是一篇文章的标题,我想在将其保存到数据库之前完全删除所有HTML。这是因为a)出于安全原因,b)如果我将其导出为JSON,我不想为第三方用户清除输出上的HTML 我在我的模型中尝试了以下方法: public function beforeSave() { if (isset($this->data[$this->alias]['title'])) {

我举了以下示例,说明用户可能会在字段中键入帖子名称:

他们是很棒的人

现在,因为这是一篇文章的标题,我想在将其保存到数据库之前完全删除所有HTML。这是因为a)出于安全原因,b)如果我将其导出为JSON,我不想为第三方用户清除输出上的HTML

我在我的模型中尝试了以下方法:

public function beforeSave() {

        if (isset($this->data[$this->alias]['title']))
        {
            //$this->data[$this->alias]['title'] = Sanitize::clean($this->data[$this->alias]['title'], array('encode'=>true,'remove_html'=>true));

            $this->data[$this->alias]['title'] = html_entity_decode(Sanitize::html($this->data[$this->alias]['title'], array('remove'=>true)));
        }
        return true;

    }
正如您所看到的,我已经尝试了Sanitize类中的Clean和HTML来清除HTML,但两者都导致了一个问题,因为它们都从
中逃出了引用,它们
使它看起来像
'。我曾尝试在消毒过程中使用
html\u entity\u decode
来清理这个问题,但仍然发生了。有什么办法吗

如果我这样做:

echo html_entity_decode('They're awesome people');
它工作得很好,所以函数很好,在CakePHP中与sanitize类结合使用是个问题

谢谢

您应该试试这个功能

编辑:

只使用PHP函数代替CakePHP库,您可以试试。

为什么不使用

 Sanitize::paranoid() 

甚至

使Sanitize::html正常工作

Sanitize::html($var, array('remove'=>true, 'quotes' => ENT_NOQUOTES));

它在内部使用HTMLEntity,默认标志设置为ENT_QUOTES。

Well
html_entity_decode
在PHP页面中执行此操作时效果良好,但在包装sanitize时不起作用,因此该函数很好,只是在clean周围的beforeSave中使用时效果不佳。这也不起作用,只是尝试一下。现在我用CakePHP进行了测试,你是对的。好吧,不是CakePHP解决方案,但是您可以只使用PHP函数吗?您可以使用删除HTML.strip_标记来完成此任务!但是为什么CakePHP版本会破坏你的HTML呢?谢谢你的解释;)