PHP preg_match(): नियमित अभिव्यक्तियाँ (Regex)
PHP में रेगुलर एक्सप्रेशन क्या है?
PHP नियमित अभिव्यक्ति रेगेक्स के रूप में भी जाना जाता है, यह शक्तिशाली पैटर्न मिलान एल्गोरिथ्म है जिसे एक ही अभिव्यक्ति में निष्पादित किया जा सकता है। नियमित अभिव्यक्तियाँ जटिल अभिव्यक्तियाँ बनाने के लिए (+,-,^) जैसे अंकगणितीय ऑपरेटरों का उपयोग करती हैं। वे ईमेल पते, आईपी पते आदि को मान्य करने जैसे कार्यों को पूरा करने में आपकी सहायता कर सकते हैं।
नियमित अभिव्यक्तियों का उपयोग क्यों करें
- PHP रेगुलर एक्सप्रेशन एकल फ़ंक्शन को कॉल करके स्ट्रिंग डेटा में पैटर्न की पहचान को सरल बनाता है। इससे हमें कोडिंग का समय बचता है।
- उपयोगकर्ता इनपुट जैसे ईमेल पता, डोमेन नाम, टेलीफोन नंबर, आईपी पते आदि को मान्य करते समय,
- खोज परिणामों में कीवर्ड हाइलाइट करना
- कस्टम HTML टेम्पलेट बनाते समय, PHP में Regex का उपयोग टेम्पलेट टैग की पहचान करने और उन्हें वास्तविक डेटा से बदलने के लिए किया जा सकता है।
PHP में अंतर्निहित नियमित अभिव्यक्ति फ़ंक्शन
PHP में ऐसे अंतर्निहित फ़ंक्शन हैं जो हमें नियमित फ़ंक्शन के साथ काम करने की अनुमति देते हैं, जिसे हम इस PHP रेगुलर एक्सप्रेशन ट्यूटोरियल में सीखेंगे। आइए PHP में आमतौर पर इस्तेमाल किए जाने वाले रेगुलर एक्सप्रेशन फ़ंक्शन पर नज़र डालें।
- PHP में preg_match() - इस फ़ंक्शन का उपयोग PHP में स्ट्रिंग पर पैटर्न मिलान करने के लिए किया जाता है। यदि कोई मिलान मिलता है तो यह सत्य लौटाता है और यदि कोई मिलान नहीं मिलता है तो यह असत्य लौटाता है।
- PHP में preg_split() – इस फ़ंक्शन का उपयोग स्ट्रिंग पर पैटर्न मिलान करने और फिर परिणामों को संख्यात्मक सरणी में विभाजित करने के लिए किया जाता है
- PHP में preg_replace() - इस फ़ंक्शन का उपयोग स्ट्रिंग पर पैटर्न मिलान करने और फिर मिलान को निर्दिष्ट टेक्स्ट से बदलने के लिए किया जाता है।
नीचे नियमित अभिव्यक्ति फ़ंक्शन जैसे PHP preg_match(), PHP preg_split() या PHP preg_replace() के लिए सिंटैक्स दिया गया है।
<?php function_name('/pattern/',subject); ?>
यहाँ,
- “function_name(…)” या तो PHP preg_match(), PHP preg_split() या PHP preg_replace() है।
- “/…/” फ़ॉरवर्ड स्लैश हमारे PHP रेगेक्स परीक्षक फ़ंक्शन की शुरुआत और अंत को दर्शाते हैं
- “'/pattern/'” वह पैटर्न है जिसका हमें मिलान करना है
- “विषय” वह टेक्स्ट स्ट्रिंग है जिसका मिलान किया जाना है
आइए अब व्यावहारिक उदाहरण देखें जो उपरोक्त PHP regex फ़ंक्शन को कार्यान्वित करते हैं।
PHP में Preg_match()
पहला उदाहरण किसी दिए गए URL में गुरु शब्द के लिए सरल पैटर्न मिलान करने के लिए PHP फ़ंक्शन में preg_match() का उपयोग करता है।
नीचे दिया गया कोड उपरोक्त उदाहरण के लिए preg_match() परीक्षक फ़ंक्शन के कार्यान्वयन को दर्शाता है।
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
URL पर ब्राउज़ करें http://localhost/phptuts/preg_match_simple.php
आइए कोड के उस हिस्से की जांच करें जो हमारे आउटपुट के लिए जिम्मेदार है “preg_match('/guru/', $my_url)” यहाँ,
- “preg_match(…)” PHP रेगेक्स फ़ंक्शन है
- “'/guru/'” मिलान किया जाने वाला नियमित अभिव्यक्ति पैटर्न है
- “$my_url” वह वेरिएबल है जिसमें मिलान किया जाने वाला टेक्स्ट होता है।
नीचे दिया गया चित्र उपरोक्त बिंदुओं का सारांश प्रस्तुत करता है
PHP प्रीग_स्प्लिट()
आइए अब एक अन्य उदाहरण देखें जो PHP फ़ंक्शन में preg_split() का उपयोग करता है।
हम एक स्ट्रिंग वाक्यांश लेंगे और उसे एक सारणी में विस्फोटित करेंगे; मिलान किया जाने वाला पैटर्न एक एकल स्पेस होगा।
इस उदाहरण में प्रयुक्त किया जाने वाला टेक्स्ट स्ट्रिंग “आई लव रेगुलर एक्सप्रेशन्स” है।
नीचे दिया गया कोड उपरोक्त उदाहरण के कार्यान्वयन को दर्शाता है।
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
URL पर ब्राउज़ करें http://localhost/phptuts/preg_split.php
PHP प्रीग_रिप्लेस()
आइये अब preg_replace() पर नजर डालें PHP फ़ंक्शन जो पैटर्न मिलान करता है और फिर पैटर्न को किसी अन्य चीज़ से प्रतिस्थापित करता है।
नीचे दिया गया कोड गुरु शब्द को खोजता है स्ट्रिंग.
यह गुरु शब्द के स्थान पर गुरु शब्द को सी.एस.एस. कोड से बदल देता है जो पृष्ठभूमि के रंग को उजागर करता है।
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
मान लें कि आपने preg_replace.php फ़ाइल को सहेज लिया है, तो ब्राउज़र को URL पर ले जाएँ http://localhost/phptuts/preg_replace.php
रेगुलर एक्सप्रेशन मेटाकैरेक्टर
ऊपर दिए गए उदाहरणों में बहुत ही बुनियादी पैटर्न का इस्तेमाल किया गया है; मेटाकैरेक्टर हमें बस अधिक जटिल पैटर्न मिलान करने की अनुमति देते हैं जैसे कि ईमेल पते की वैधता का परीक्षण करना। आइए अब आम तौर पर इस्तेमाल किए जाने वाले मेटाकैरेक्टर पर नज़र डालें।
मेटाट्रेक्टर | विवरण | उदाहरण |
---|---|---|
. | नई पंक्ति को छोड़कर किसी भी एकल वर्ण से मेल खाता है | /./ किसी भी ऐसी चीज़ से मेल खाता है जिसमें एक ही अक्षर हो |
^ | स्ट्रिंग के आरंभ से मेल खाता है / वर्णों को छोड़ता है | /^PH/ PH से शुरू होने वाली किसी भी स्ट्रिंग से मेल खाता है |
$ | स्ट्रिंग के अंत में पैटर्न से मेल खाता है | /com$/ guru99.com,yahoo.com आदि से मेल खाता है। |
* | किसी भी शून्य (0) या अधिक वर्णों से मेल खाता है | /com*/ कंप्यूटर, संचार आदि से मेल खाता है। |
+ | पूर्ववर्ती वर्ण(अक्षरों) का कम से कम एक बार प्रकट होना आवश्यक है | /yah+oo/ याहू से मेल खाता है |
\ | मेटा वर्णों से बचने के लिए उपयोग किया जाता है | /yahoo+\.com/ बिंदु को शाब्दिक मान के रूप में मानता है |
[...] | वर्ण वर्ग | /[abc]/ abc से मेल खाता है |
AZ | छोटे अक्षरों से मेल खाता है | /az/ कूल, हैप्पी आदि से मेल खाता है। |
प्रथम से अंतिम अक्षर तक | बड़े अक्षरों से मेल खाता है | /AZ/ का तात्पर्य WHAT, HOW, WHY आदि से है। |
0-9 | 0 से 9 के बीच किसी भी संख्या से मेल खाता है | /0-4/ मैच 0,1,2,3,4 |
उपरोक्त सूची में केवल नियमित अभिव्यक्तियों में सबसे अधिक प्रयुक्त मेटाकैरेक्टर दिए गए हैं।
आइए अब एक जटिल उदाहरण देखें जो ईमेल पते की वैधता की जांच करता है।
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
पैटर्न की व्याख्या “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]”
यहाँ,
- “'/…/'” नियमित अभिव्यक्ति को शुरू और समाप्त करता है
- “^[a-zA-Z0-9._-]” किसी भी छोटे या बड़े अक्षर, 0 और 9 के बीच की संख्या और डॉट्स, अंडरस्कोर या डैश से मेल खाता है।
- “+@[a-zA-Z0-9-]” @ प्रतीक के बाद छोटे या बड़े अक्षर, 0 और 9 के बीच की संख्या या डैश से मेल खाता है।
- “+\.[a-zA-Z.]{2,5}$/” बैकस्लैश का उपयोग करके डॉट को एस्केप करता है, फिर स्ट्रिंग के अंत में 2 से 5 के बीच वर्ण लंबाई वाले किसी भी लोअर या अपर केस अक्षर से मिलान करता है।
URL पर ब्राउज़ करें http://localhost/phptuts/preg_match.php
जैसा कि आप उपरोक्त उदाहरण से देख सकते हैं, पैटर्न मिलान के मामले में मेटाकैरेक्टर बहुत शक्तिशाली होते हैं।
सारांश
- PHP में रेगुलर एक्सप्रेशन या रेगेक्स एक पैटर्न मैच एल्गोरिथ्म है
- नियमित अभिव्यक्तियाँ सत्यापन जाँच करते समय, टैग्स को पहचानने वाले HTML टेम्पलेट सिस्टम बनाते समय बहुत उपयोगी होती हैं।
- PHP इसमें PHP preg_match(), PHP preg_split() और PHP preg_replace() नामक अंतर्निहित फ़ंक्शन हैं जो नियमित अभिव्यक्तियों का समर्थन करते हैं।
- मेटाकैरेक्टर हमें जटिल पैटर्न बनाने की अनुमति देते हैं