簡體   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