6

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

ENT_QUOTES有没有一种方法可以默认为函数设置标志htmlentities(),这样即使我写htmlentities($data)它也应该作为htmlentities($data, ENT_QUOTES).

正如 php 文档中所写,默认值为ENT_COMPAT | ENT_HTML401.

供您参考,我正在使用 codeigniter 框架 php5。

更新 1:按照 Michael 的建议使用自定义函数进行包装可能会有所帮助,但我已经在网站中的任何地方都使用了它,没有 ENT_QUOTES 标志,并且想知道 php 是否提供了一种方法来更改其函数的默认值。

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

4

2 回答 2

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. 这也为您提供了在未来轻松进行更改的机会,因为您可以更改功能。这是一个初步的时间投资,但非常值得。

于 2012-11-05T03:18:58.613 回答
0

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

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

于 2012-11-05T06:05:01.230 回答