यदि डेटा CSV फ़ाइल से आ रहा है, तो आपको याद रखना होगा कि सभी मान स्ट्रिंग होने जा रहे हैं (यहां तक कि संख्यात्मक स्ट्रिंग्स में अभी भी एक स्ट्रिंग प्रकार है)।
इसलिए आप is_int()
का उपयोग नहीं कर सकते हैं /is_float()
/आदि, क्योंकि यह आपको केवल प्रकार . के बारे में बताता है या चर। आप is_numeric()
का उपयोग कर सकते हैं मूल्य की जांच करने के लिए, लेकिन यह "+0123.45e6" जैसी घातीय संकेतन जैसी चीजों की अनुमति देगा। कभी-कभी ctype_digit()
इस कारण से पूर्णांकों के परीक्षण के लिए उपयोगी हो सकता है, क्योंकि यह केवल 0-9 संख्याओं को एक स्ट्रिंग में मौजूद होने की अनुमति देगा ताकि यह सही हो।
पैटर्न-आधारित डेटा प्रकारों की पहचान करने के लिए नियमित अभिव्यक्तियों का भी उपयोग किया जा सकता है, लेकिन बड़े डेटा सेट के साथ काम करते समय आपको प्रदर्शन ओवरहेड पर ध्यान देना होगा। प्रदर्शन के दृष्टिकोण से लगभग हमेशा preg_
. का उपयोग करने की सलाह दी जाती है ereg
. के बजाय कार्यों का परिवार कार्य।
यदि आप ENUM या SET प्रकार जैसी चीज़ों को मान्य कर रहे हैं, तो आपको संभवतः कानूनी मानों वाली एक सरणी बनाने की आवश्यकता होगी (या किसी क्वेरी के साथ इन्हें निकालें) और फिर in_array()
के साथ उनके विरुद्ध मान की जाँच करें। ।
CHAR/VARCHAR फ़ील्ड के लिए, आप कॉलम परिभाषा को पार्स कर सकते हैं और फिर जांच सकते हैं कि मान की लंबाई बाधाओं के भीतर आती है या नहीं।
यदि आपके किसी भी कॉलम पर NULL प्रकार की अनुमति है, तो आपको इसके विरुद्ध भी जांच करनी होगी (और संभवतः रिक्त मान या स्ट्रिंग "NULL" को वास्तविक NULL मान पर मैप करें)।
यदि आप वास्तव में इन मूल्यों से ठीक से बचना चाहते हैं, तो तैयार बयानों और पीडीओ (PHP डेटा ऑब्जेक्ट) एक्सटेंशन का उपयोग करें। यह MySQL को प्रकार के आधार पर डेटा से ठीक से बचने की अनुमति देता है। (आप MySQLi के साथ तैयार स्टेटमेंट का भी उपयोग कर सकते हैं।)
यदि आप विशिष्ट डेटा प्रकारों की तलाश कर रहे हैं और उन्हें कैसे पहचानें, तो हो सकता है कि आप अधिक पूर्ण उत्तरों की सुविधा के लिए अपने प्रश्न को संपादित करना चाहें।