PHP में रेगुलर एक्सप्रेशन: थ्योरी से प्रैक्टिस तक
\n\nरेगुलर एक्सप्रेशन (regex या regexp) एक शक्तिशाली टूल है जो दिए गए पैटर्न के आधार पर स्ट्रिंग्स को खोजने, बदलने और जांचने के लिए उपयोग होता है। PHP में इसे PCRE (Perl Compatible Regular Expressions) फंक्शन सेट के माध्यम से लागू किया गया है, जो ईमेल वैलिडेशन से लेकर HTML पार्सिंग तक किसी भी जटिलता के कार्यों को हल कर सकता है। इस आर्टिकल में हम सिंटैक्स, मुख्य फंक्शन और प्रैक्टिकल उदाहरणों को समझेंगे जो हर PHP डेवलपर के काम आएंगे।
\n\n1. PHP में रेगुलर एक्सप्रेशन का बेसिक सिंटैक्स
\n\nPHP में किसी भी रेगुलर एक्सप्रेशन को डिलीमीटर (आमतौर पर स्लैश /) के अंदर लिखा जाता है। बंद करने वाले डिलीमीटर के बाद मॉडिफायर लगाए जा सकते हैं, जो सर्च के व्यवहार को बदलते हैं।
$pattern = '/पैटर्न/मॉडिफायर';\n\nमुख्य मेटाकैरेक्टर:
\n- \n
.— कोई भी एक सिंगल कैरेक्टर (न्यू लाइन को छोड़कर) \n *— पिछले कैरेक्टर का शून्य या अधिक बार दोहराव \n +— एक या अधिक बार दोहराव \n ?— शून्य या एक बार दोहराव (क्वांटिफायर को लेज़ी बनाता है) \n ^— स्ट्रिंग की शुरुआत \n $— स्ट्रिंग का अंत \n \\d— अंक (0-9) \n \\w— अक्षर, अंक या अंडरस्कोर \n \\s— स्पेस कैरेक्टर \n []— कैरेक्टर क्लास (जैसे[a-z]) \n ()— कैप्चर ग्रुप \n
लोकप्रिय मॉडिफायर:
\n- \n
i— केस-इनसेंसिटिव सर्च \n m— मल्टीलाइन मोड (^ और $ हर लाइन के लिए काम करते हैं) \n u— UTF-8 सपोर्ट (हिंदी/यूनिकोड के लिए ज़रूरी) \n s— डॉट न्यू लाइन को भी कैप्चर करता है \n
2. preg_match() फंक्शन: मैच ढूंढना
\n\npreg_match() सबसे लोकप्रिय फंक्शन है। यह जांचता है कि स्ट्रिंग पैटर्न से मेल खाती है या नहीं, और 1 (मैच मिला) या 0 (नहीं मिला) रिटर्न करता है। तीसरा पैरामीटर एक ऐरे है जिसमें मिले मैच स्टोर होते हैं।
उदाहरण 1. ईमेल एड्रेस की जांच
\n<?php\n$email = "user@example.com";\n$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/';\n\nif (preg_match($pattern, $email)) {\n echo "ईमेल सही है";\n} else {\n echo "ईमेल गलत है";\n}\n// आउटपुट: ईमेल सही है\n?>\n\nउदाहरण 2. स्ट्रिंग से डेटा निकालना
\n<?php\n$text = "मेरा नंबर: +91 98765 43210";\n$pattern = '/\\+91\\s*\\d{5}\\s*\\d{5}/u';\n\nif (preg_match($pattern, $text, $matches)) {\n echo "नंबर मिला: " . $matches[0];\n}\n// आउटपुट: नंबर मिला: +91 98765 43210\n?>\n\nध्यान दें: अगर स्ट्रिंग में हिंदी या यूनिकोड कैरेक्टर हैं, तो u मॉडिफायर का उपयोग ज़रूरी है।
3. preg_replace() फंक्शन: पैटर्न के आधार पर बदलाव
\n\npreg_replace() स्ट्रिंग में पैटर्न से मेल खाने वाले सभी हिस्सों को ढूंढता है और उन्हें दिए गए टेक्स्ट से बदल देता है। कैप्चर ग्रुप $1, $2 आदि का उपयोग करके मूल टेक्स्ट के हिस्सों को सब्स्टीट्यूट किया जा सकता है।
उदाहरण 3. फोन नंबर को फॉर्मेट करना
\n<?php\n$phone = "919876543210";\n$pattern = '/(\\d{2})(\\d{5})(\\d{5})/';\n$replacement = '+$1 $2-$3';\n\n$formatted = preg_replace($pattern, $replacement, $phone);\necho $formatted; // +91 98765-43210\n?>\n\nउदाहरण 4. HTML से टैग हटाना (अनुमत टैग को छोड़कर)
\n<?php\n$html = "<b>बोल्ड</b> <script>alert('xss')</script> टेक्स्ट";\n$pattern = '/<\\s*\\/?\\s*(?!b|i|u|a\\b)[^>]*>/ui';\n\n$clean = preg_replace($pattern, '', $html);\necho $clean; // <b>बोल्ड</b> टेक्स्ट\n?>