php

2012-11-04 33 views
6

में htmlentities() फ़ंक्शन के लिए डिफ़ॉल्ट रूप से ENT_QUOTES ध्वज को कैसे सेट करें I इसे प्रदर्शित करने से पहले डेटाबेस से प्राप्त किए गए किसी भी डेटा पर htmlentities($data, ENT_QUOTES) का उपयोग कर रहा हूं।php

वहाँ एक रास्ता मैं htmlentities() समारोह के लिए डिफ़ॉल्ट रूप से झंडा ENT_QUOTES सेट कर सकते हैं, इसलिए है कि भले ही मैं htmlentities($data) बारे में यह htmlentities($data, ENT_QUOTES) के रूप में काम करना चाहिए है।

php के दस्तावेज़ में लिखे गए अनुसार डिफ़ॉल्ट ENT_COMPAT | ENT_HTML401 है।

आपकी जानकारी के लिए मैं कोडनिर्देशक ढांचे, php5 का उपयोग कर रहा हूँ।

अद्यतन 1: माइकल द्वारा सुझाए गए कस्टम फ़ंक्शन के साथ लपेटने में मदद मिल सकती है, लेकिन मैंने पहले से ही इसे हर जगह ENT_QUOTES ध्वज के बिना वेबसाइट में उपयोग किया है और यह सोच रहा था कि PHP के कार्यों के लिए डिफ़ॉल्ट रूप से बदलने के लिए कोई तरीका है या नहीं।

अद्यतन 2: मुझे लगता है कि codeigniter (वेस्ले द्वारा सुझाए गए) द्वारा प्रदान किया गया HTML_escape() अंतर्निहित फ़ंक्शन मेरे लिए सबसे अच्छा है ताकि मुझे अपना स्वयं का रैपर फ़ंक्शन लिखना न पड़े।

+0

आप 'htmlentities' का उपयोग क्यों करते हैं, न कि 'htmlspecialchars'? – zerkms

+3

आप बस फ़ंक्शन को लपेट सकते हैं। 'my_htmlentities ($ string) फ़ंक्शन करें {वापसी htmlentities ($ string, ENT_QUOTES);}' और 'my_htmlentities()' को इसके बजाय कॉल करें। –

+0

@zerkms शायद एचटीएमएल विशेषताओं के अंदर इसका उपयोग कर सकते हैं, जहां 'htmlentities()' उद्धरण एन्कोडिंग को अधिक सीधे-आगे तरीके से संभालता है। –

उत्तर

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 के साथ (ध्यान से) प्रतिस्थापित करें। यह भविष्य में आसानी से बदलाव करने का अवसर भी प्रदान करेगा क्योंकि आप फ़ंक्शन को बदल सकते हैं। यह प्रारंभिक समय निवेश का थोड़ा सा है लेकिन इसके लायक है।

+0

मुझे लगता है कि यह वही है जो मैं ढूंढ रहा था .. धन्यवाद :) –

+0

तथ्य यह है कि यह सरणी को साफ कर सकता है और साथ ही साथ मेरा जीवन बहुत आसान बना दिया है .. मुझे बस नियंत्रक में एक बार में पूर्ण डेटा सरणी पास करनी है इसे देखने के लिए भेज रहा है। –

0

यदि आप सीधे चर का उपयोग कर रहे हैं। उदाहरण के लिए: $ यह-> model_name-> चर;

फिर आप मॉडल नाम में __get फ़ंक्शन का उपयोग कर सकते हैं और इसे ऑब्जेक्ट से एक्सेस करने से पहले संसाधित कर सकते हैं। http://www.php.net/manual/en/language.oop5.overloading.php#object.get

+0

मुझे यह नहीं मिला .. यह मेरे उद्देश्य को कैसे हल कर रहा है? –