यदि आप वास्तव में जानना चाहते हैं कि क्या एक स्ट्रिंग एक सच्चे PHP पूर्णांक प्रकार का एक वैध प्रतिनिधित्व है ...
in_array($string, array_map('strval', range(PHP_INT_MIN, PHP_INT_MAX)), true)
हालांकि यह चलाना असंभव है क्योंकि सेट बहुत बड़ा है (इस मामले में मेमोरी में फिट नहीं होगा, यदि आप इसके बजाय लूप करते हैं तो यह बहुत अधिक सीपीयू चक्र लेगा)।
आप शायद स्ट्रिंग तुलना के साथ एक द्विआधारी खोज कर सकते हैं, हालांकि बेहतर तरीके हैं।
सबसे सरल:
strlen($string) <= max(strlen((string)PHP_INT_MIN), strlen((string)PHP_INT_MAX)) && $string === (string)(int)$string
इसे अप्रोच करने के कुछ अन्य असामान्य तरीके हैं:
is_int(array_keys([$string => null])[0])
आप स्ट्रिंग तुलना भी कर सकते हैं, लेकिन आपको अभी भी ctype_digit जैसी चीजें करने की आवश्यकता होगी, जांच लें कि लंबाई उचित है (ctype_digit जैसी चीजों को करने से पहले सीपीयू को बर्बाद न करें) और नकारात्मक संख्याओं के लिए कुछ अजीब हैंडलिंग करें।
ध्यान दें कि filter_var सही ढंग से यह दावा नहीं करता है कि एक स्ट्रिंग वास्तव में एक PHP पूर्णांक का प्रतिनिधित्व है। यह एक प्रमुख + और आसपास के व्हाट्सएप की अनुमति देगा।
आंतरिक रूप से PHP सख्त तुलना के लिए फ़ंक्शन "_zend_handle_numeric_str" का उपयोग करता है, लेकिन यह सीधे कहीं भी उजागर नहीं करता है, इसलिए सरणी कुंजियों का उपयोग करने वाली चाल (जो किसी भी स्ट्रिंग को परिवर्तित करने के लिए इसका उपयोग करता है जो PHP पूर्णांक के लिए PHP पूर्णांक का प्रतिनिधित्व करता है)।
यदि आप PHP से बाइनरी सुरक्षित रूपांतरण चाहते हैं और इसे लेने के लिए दृष्टिकोण है।
हर कोई ऐसा नहीं चाहता है और यह उपयोगकर्ता इनपुट को संभालने का मामला हो सकता है। फ़िल्टर_वर उसके लिए बहुत बुरा नहीं है और PHP के लिए नए लोगों के लिए ज्यादातर मामलों में काफी सुरक्षित होगा।
एक लंबाई की जाँच, ctype_digit और फिर परिवर्तित मान का एक चेक जो कि एक सीमा में है, उपयोगकर्ता इनपुट के लिए भी काफी ठोस है। अधिक जटिल योजनाएँ ट्रिम या रेगेक्स चाहती हैं।
उस संबंध में यहां बहुत सारे जवाबों के साथ समस्या यह है कि जब सवाल अस्पष्ट है, तो उत्तर नहीं होने चाहिए। यदि आप एक समाधान का प्रस्ताव करने जा रहे हैं, तो आपको यह स्पष्ट रूप से समझाने में सक्षम होना चाहिए कि यह क्या होगा और क्या उम्मीद नहीं करेगा। इसके बिना अगर कोई उत्तर किसी प्रश्न से मेल खाता है या सुरक्षित है तो कोई बता नहीं सकता। PHP मैनुअल हमेशा मदद नहीं करता है क्योंकि यह उन सभी प्रासंगिक तरीकों की व्याख्या नहीं करता है जो इसकी आपूर्ति करता है। Ctype_digit और is_int जैसी चीजें बहुत ही विश्वसनीय और भविष्यवाणी करने में आसान हैं, लेकिन is_numeric, filter_var और बाजीगरी (+ $ var) या कास्टिंग (intval / floatval) की बारीकियों को खराब दस्तावेज़ हैं।
यह आप के लिए PHP ठगना है। इसमें विसंगतियों के साथ पूर्णांक के रूप में तारों की व्याख्या करने के लिए स्कीमाओं की असंख्य संख्या है। पूर्णांक स्ट्रिंग को मान्य करने का सबसे सख्त तरीका सीधे उपयोगकर्ता के सामने नहीं आता है।