如何在php中为htmlentities()函数默认设置ENT_QUOTES标志
我在显示之前对从数据库中获取的任何数据使用如何在php中为htmlentities()函数默认设置ENT_QUOTES标志,php,codeigniter,html-entities,Php,Codeigniter,Html Entities,我在显示之前对从数据库中获取的任何数据使用htmlentities($data,entu QUOTES) 有没有办法在默认情况下为htmlentities()函数设置标志entquotes,这样即使我写htmlenties($data)它也应该像htmlenties($data,entquotes)一样工作 如php文档中所述,默认值为ENT_COMPAT | ENT_HTML401 为您提供信息,我正在使用codeigniter框架php5 更新1:按照Michael的建议,使用自定义函数包装
htmlentities($data,entu QUOTES)
有没有办法在默认情况下为htmlentities()
函数设置标志entquotes
,这样即使我写htmlenties($data)
它也应该像htmlenties($data,entquotes)
一样工作
如php文档中所述,默认值为ENT_COMPAT | ENT_HTML401
为您提供信息,我正在使用codeigniter框架php5
更新1:按照Michael的建议,使用自定义函数包装可能会有所帮助,但我已经在网站上的任何地方使用过,没有使用ENT_QUOTES标志,我想知道php是否提供了一种方法来更改其函数的默认值
更新2:我认为codeigniter(Wesley建议)提供的html_escape()内置函数最适合我,这样我就不必编写自己的包装函数了。我知道没有办法更改默认标志,但是评论中给你的建议绝对是解决这个问题的最好方法:使用包装器函数 为了方便起见,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\u escape
。这也将为您提供一个在将来轻松进行更改的机会,因为您可以更改功能。这是一点初始时间投资,但非常值得。如果您直接访问变量。
例如:
$this->model_name->variable
然后,您可以在模型名中使用_get函数,并在从对象访问它之前对其进行处理。
为什么要使用
htmlspecialchars
,而不是htmlspecialchars
?只需包装函数即可<代码>函数my_htmlentities($string){return htmlentities($string,entu QUOTES)}并调用my_htmlentities()
。@zerkms可能通常在HTML属性中使用它,其中htmlenties()
以一种更直接的方式处理引号编码。@Zerkms:就这个问题而言,这没有什么区别,因为对于htmlspecialchars,我也需要提供ENT_引号标志。。对吗?@Michael:包装函数当然是一个很好的技巧,它应该可以工作。。我会试试:)但是有没有更基本的方法,比如改变一些ini等。我想这就是我想要的。。谢谢:)它还可以清理阵列,这让我的生活轻松多了。。我只需将完整的数据数组立即传递到控制器本身,然后再将其发送到视图。我没有得到它。。它如何解决我的目的?