PHP में नियमित अभिव्यक्तियाँ उदाहरण सहित: व्यावहारिक रूप से
\n\nनियमित अभिव्यक्तियाँ (regex) टेक्स्ट को खोजने, बदलने और विश्लेषण करने के लिए एक शक्तिशाली उपकरण हैं। PHP में, वे PCRE (Perl Compatible Regular Expressions) फ़ंक्शन सेट के माध्यम से कार्यान्वित की जाती हैं। इनके बिना फॉर्म सत्यापन, लॉग पार्सिंग या स्ट्रिंग्स में पैटर्न बदलने की कल्पना करना कठिन है।
\n\nइस लेख में, हम PHP में नियमित अभिव्यक्तियों को उदाहरण सहित समझेंगे, जिन्हें आप तुरंत अपने प्रोजेक्ट्स में लागू कर सकते हैं। हम सिद्धांत में गहराई से नहीं जाएंगे - केवल अभ्यास, कोड और वास्तविक परिदृश्य।
\n\n1. PHP में regex के साथ काम करने के लिए मुख्य फ़ंक्शन
\n\nPHP में तीन प्रमुख फ़ंक्शन हैं जो 95% कार्यों को कवर करते हैं:
\n\n- \n
preg_match()— पहला मिलान खोजें। \n preg_match_all()— सभी मिलान खोजें। \n preg_replace()— पैटर्न के अनुसार बदलें। \n preg_split()— पैटर्न के अनुसार स्ट्रिंग को विभाजित करें। \n
सभी फ़ंक्शन तीन पैरामीटर लेते हैं: पैटर्न (pattern), स्ट्रिंग (subject) और वैकल्पिक फ़्लैग।
\n\nउदाहरण 1: ईमेल जाँच
\n\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पैटर्न को समझते हैं: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/
- \n
^— स्ट्रिंग की शुरुआत। \n [a-zA-Z0-9._%+-]+— एक या अधिक अनुमत वर्ण। \n @— शाब्दिक @ चिह्न। \n [a-zA-Z0-9.-]+— डोमेन नाम। \n \\.— डॉट (एस्केप किया गया)। \n [a-zA-Z]{2,}— डोमेन ज़ोन (कम से कम 2 अक्षर)। \n $— स्ट्रिंग का अंत। \n
उदाहरण 2: HTML से सभी लिंक निकालना
\n\n<?php\n$html = '<a href="https://pythonlib.ru">साइट</a> और <a href="/about">हमारे बारे में</a>';\n$pattern = '/href="([^"]+)"/';\n\npreg_match_all($pattern, $html, $matches);\n\nprint_r($matches[1]); // लिंक की सरणी प्रदर्शित करेगा\n?>\n\nयहाँ ([^"]+) एक कैप्चरिंग ग्रुप है जो href विशेषता के अंदर उद्धरणों को छोड़कर सब कुछ खोजता है।
2. मॉडिफ़ायर और उनका व्यावहारिक उपयोग
\n\nमॉडिफ़ायर नियमित अभिव्यक्ति के व्यवहार को बदलते हैं। वे समापन स्लैश (/) के बाद रखे जाते हैं।
- \n
i— केस-असंवेदनशील खोज। \n m— मल्टीलाइन मोड (^ और $ प्रत्येक पंक्ति के लिए काम करते हैं)। \n s— डॉट में न्यूलाइन शामिल है। \n U— आलसी मोड (डिफ़ॉल्ट रूप से लालची)। \n u— UTF-8 समर्थन। \n
उदाहरण 3: केस-असंवेदनशील शब्द खोज
\n\n<?php\n$text = "PHP एक शक्तिशाली भाषा है। php का उपयोग हर जगह किया जाता है।";\n$pattern = "/php/i";\n\npreg_match_all($pattern, $text, $matches);\necho count($matches[0]); // 2 प्रदर्शित करेगा\n?>\n\nउदाहरण 4: सिरिलिक (UTF-8) के साथ काम करना
\n\n<?php\n$text = "नमस्ते, दुनिया!";\n$pattern = "/[a-ज़]+/ui"; // u — UTF-8, i — केस-असंवेदनशीलता\n\npreg_match_all($pattern, $text, $matches);\nprint_r($matches[0]); // ['नमस्ते', 'दुनिया']\n?>\n\nu मॉडिफ़ायर के बिना, सिरिलिक को गलत तरीके से संसाधित किया जाएगा, क्योंकि PHP प्रत्येक बाइट को एक अलग वर्ण मानता है।
3. नियमित अभिव्यक्तियों के साथ स्ट्रिंग्स को बदलना और विभाजित करना
\n\npreg_replace() फ़ंक्शन आपको पैटर्न के अनुसार स्ट्रिंग के भागों को बदलने की अनुमति देता है। और preg_split() — स्ट्रिंग को explode की तरह विभाजित करता है, लेकिन regex का उपयोग करने की क्षमता के साथ।
उदाहरण 5: HTML टैग से टेक्स्ट साफ़ करना
\n\n<?php\n$html = "<h1>शीर्षक</h1><p>टेक्स्ट जिसमें <b>बोल्ड</b> शब्द है</p>";\n$clean = preg_replace("/<[^>]+>/", "", $html);\necho $clean; // शीर्षकटेक्स्ट जिसमें बोल्ड शब्द है\n?>