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

Ank*_*sad 6 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建议)对我来说是最好的,所以我不必编写自己的包装函数.

Wes*_*rch 3

据我所知,无法更改默认标志,但评论中给您的建议绝对是解决此问题的最佳方法:使用包装函数。

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

echo html_escape($string);
Run Code Online (Sandbox Code Playgroud)

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

/**
* 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'));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

只需在您的项目中搜索htmlentities并(小心)替换为html_escape. 这也将为您提供将来轻松进行更改的机会,因为您可以更改功能。虽然初始时间投资有点大,但非常值得。