如何为php中的htmlentities()函数默认设置ENT_QUOTES标志

时间:2012-11-04 23:14:40

标签: php codeigniter html-entities

我在显示数据库之前从数据库中获取的任何数据都使用htmlentities($data, ENT_QUOTES)

有没有办法可以为ENT_QUOTES函数默认设置标记htmlentities(),这样即使我写htmlentities($data)它也应该htmlentities($data, ENT_QUOTES)

如php文档所述,默认为ENT_COMPAT | ENT_HTML401

为了您的信息,我使用的是codeigniter框架,php5。

更新1:使用迈克尔建议的自定义函数进行包装可能有所帮助,但我已经在没有ENT_QUOTES标志的网站中随处使用了这个,并且想知道php是否提供了一种方法来更改其功能的默认值。

更新2:我认为由codeigniter提供的html_escape()内置函数(由Wesley建议)对我来说是最好的,所以我不必编写自己的包装函数。

2 个答案:

答案 0 :(得分:3)

没有办法改变我所知道的默认标志,但是在评论中给出的建议绝对是解决这个问题的最佳方法:使用包装函数。

方便的是,Codeigniter已经内置了一个,名称恰当为:

echo html_escape($string);

你也可以传入数组,这就是它的作用:

/**
* Returns HTML escaped variable
*
* @access   public
* @param    mixed
* @return   mixed
*/
if ( ! function_exists('html_escape'))
{
    function html_escape($var)
    {
        if (is_array($var))
        {
            return array_map('html_escape', $var);
        }
        else
        {
            return htmlspecialchars($var, ENT_QUOTES, config_item('charset'));
        }
    }
}

只需在项目中搜索htmlentities,然后({仔细地)替换为html_escape。这也将为您提供在未来轻松进行更改的机会,因为您可以更改功能。这是初期投资的一小部分,但非常值得。

答案 1 :(得分:0)

如果您直接访问变量。 例如: $这 - > model_name->变量;

然后您可以在模型名称中使用__get函数并在从对象访问之前对其进行处理。 http://www.php.net/manual/en/language.oop5.overloading.php#object.get