[英]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.