繁体   English   中英

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

[英]How to set ENT_QUOTES flag by default for htmlentities() function in php

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

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

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

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

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

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

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

方便的是,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替换(小心)。 这也将为您提供在未来轻松进行更改的机会,因为您可以更改功能。 这是初期投资的一点点,但非常值得。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM