[Php] जांचें कि क्या एक चर एक प्राकृतिक संख्या है



Answers

ctype_digit जो आप चाहते हैं वह करता है:

जांच की गई है कि प्रदान किए गए स्ट्रिंग में सभी वर्ण, टेक्स्ट संख्यात्मक हैं।

(PHP 5.1.0 से पहले, यह फ़ंक्शन सही था जब पाठ एक रिक्त स्ट्रिंग था।)

Question

मैं एक वेबसाइट पर एक बोली प्रणाली बनाना चाहता हूं इसका अर्थ है कि उपयोगकर्ता अपनी बोली (प्राकृतिक संख्या) पोस्ट कर सकते हैं। मैं यह सुनिश्चित करना चाहता हूं कि उपयोगकर्ता अक्षरों, दशमलव संख्या आदि को पोस्ट करने का प्रयास न करें। मैं is_numeric फ़ंक्शन का उपयोग नहीं करना चाहता क्योंकि हेक्साडेसिमल संकेतन की अनुमति है। मैं इस के लिए preg_match का उपयोग करने के लिए सोच रहा था लेकिन php.net में इस फ़ंक्शन का दस्तावेज़ीकरण बहुत कम है और मुझे पता नहीं है कि preg_match का उपयोग कैसे करना है।

तो मुझे कैसे जाँच करनी चाहिए कि एक चर preg_match के साथ एक प्राकृतिक संख्या है?




इस तरह की प्राकृतिक संख्याओं की आपकी परिभाषा पर निर्भर करता है - विभिन्न सिद्धांतों के अनुसार, संख्या शून्य ( 0 ) करता है या वह स्वाभाविक संख्या के रूप में नहीं गिना जाता है।

अपने प्रश्न का उत्तर देने के लिए कि यह कैसे preg_match साथ हल करें:

यदि आप शून्य शामिल करना चाहते हैं, तो preg_match का उपयोग करना बहुत आसान है preg_match('^[0-9]+$', $input)
उपयोग:

if (preg_match('^[0-9]+$', $input))
  // $input represents a non-negative numeric value
else
  // $input does not represent a non-negative numeric value

यदि आप शून्य को शामिल नहीं करना चाहते हैं, तो preg_match('^[1-9][0-9]*$', $input) :

if (preg_match('^[1-9][0-9]*$', $input))
  // $input represents a positive numeric value
else
  // $input does not represent a positive numeric value

उसने कहा - आपकी विशेष समस्या के लिए, ctype_digit का उपयोग करना एक तेज़ समाधान है, जैसा कि पहले से ही अन्य लोगों ने बताया है (यदि आप संख्या शून्य की अनुमति नहीं देना चाहते हैं तो आपको एक दूसरी जांच करना होगा)।




मैं आमतौर पर संख्याओं को पार्स करने के लिए regex का उपयोग करने के बारे में सावधानी बरतता हूं, क्योंकि आमतौर पर इस के लिए regex की तुलना में बेहतर समाधान होते हैं, लेकिन जब से आप पूछ रहे हैं, मैं आपको इसके साथ कुछ सहायता देने का प्रयास करूंगा:

preg_match यह मिलान के लिए नियमित अभिव्यक्ति (regex) का उपयोग करता है

आप http://www.regular-expressions.info/ जैसे साइटों पर रीगेक्स सिंटैक्स के बारे में अधिक जानकारी प्राप्त कर सकते हैं

यदि आप regex में एक अंक से मिलान करना चाहते हैं, तो आप या तो [0-9] या \d उपयोग कर सकते हैं।

यदि आप एक या अधिक कुछ से मेल खाना चाहते हैं, तो आप प्लस चिह्न का उपयोग करेंगे

अंत में, वर्णों की एक जोड़ी में regex स्ट्रिंग संलग्न होना चाहिए चुनिंदा चरित्र आमतौर पर एक स्लैश ( / ) वर्ण होता है, क्योंकि कुछ भाषाओं को विशेष रूप से इस वर्ण की आवश्यकता होती है, लेकिन PHP अन्य वर्णों का उपयोग करने की अनुमति देता है; टिल्ड ( ~ ) काफी आम है।

तो किसी भी संख्या के अंकों से मिलान करने के लिए आपका regex स्ट्रिंग "/\d+/" इसके बाद इसे एक preg_match कॉल में डाल दिया जा सकता है:

$isnumeric = preg_match("/\d+/",$input_string);

यदि आपके पास अधिक विशिष्ट आवश्यकताएं हैं, तो आप {max} या {min,max} साथ प्लस चिह्न को बदलकर अनुमत पात्रों की संख्या को सीमित कर सकते हैं जहां 'न्यूनतम' और 'अधिकतम' पिछले मैच की अनुमति है। तो दो से छह अंकों के बीच एक नंबर की अनुमति देने के लिए, आप इसका उपयोग करेंगे:

$isnumeric = preg_match("/\d{2,6}/",$input_string);

यदि आपको दशमलव बिंदु की अनुमति है, तो आपको यह जानना होगा कि डॉट वर्ण रीगेक्स में एक विशेष वर्ण है (इसका अर्थ है 'किसी भी कैरेक्टर को मैच'), इसलिए आपको इसे बैक-स्लैश से बचाना होगा।

इसलिए, दो दशमलव स्थानों के साथ मुद्रा की राशि का मिलान करने के लिए एक regex, और बिंदु से कम से कम एक अंक पहले होगा:

$isnumeric = preg_match("/\d+\.\d\d/",$input_string);

अंत में, ध्यान दें कि यदि सभी स्ट्रिंग में केवल मिलान किए गए मान शामिल है , तो regex सभी में सत्य वापस करेगा। यह सुनिश्चित करने के लिए कि इसमें कुछ भी शामिल नहीं है, आपको लंगर वर्णों का उपयोग करके स्ट्रिंग के सामने और अंत में 'एंकर' की आवश्यकता होगी: ^ स्ट्रिंग की शुरुआत के लिए, और अंत के लिए $

इसलिए पिछले उदाहरण के लिए, यदि आप चाहते हैं कि यह केवल दशमलव संख्या रखे, और कुछ नहीं, तो आपको इसकी आवश्यकता होगी:

$isnumeric = preg_match("/^\d+\.\d\d$/",$input_string);

रेगेक्स एक जटिल विषय है, लेकिन मुझे आशा है कि आपको शुरुआत मिल जाएगी




सरल कार्य:

function isnature($x){
$y = ceil($x)-floor($x);
return $y == 0 ? true : false;
}



Links