सूचना की दुनिया कितनी बड़ी और विविध है,यह उतनी ही तेजी से विस्तार और विकास कर रहा है। कोई भी निर्णय आंदोलन की समग्र प्रक्रिया में एक क्षण मात्र होता है। ज्ञान और अनुभव किसी लक्ष्य को प्राप्त करने की प्रक्रिया को समझना संभव बनाते हैं, लेकिन उसे प्राप्त करने के परिणाम को कभी नहीं। यह संदिग्ध है कि निकट भविष्य में किसी परिणाम के बारे में बात करना संभव है, लेकिन यह बहुत महत्वपूर्ण है कि इसके लिए प्रयास करने की प्रक्रिया एक आवश्यक और उद्देश्यपूर्ण रूप से आवश्यक प्रक्रिया है।
"इच्छा और/या बड़ा पैसा" पैदा नहीं होताएक एल्गोरिथ्म वह करने में सक्षम है जो मनुष्य स्वाभाविक रूप से और "स्वतंत्र रूप से" करेगा, खासकर जब वह इस बारे में नहीं सोचता कि वह वास्तव में क्या कर रहा है। किसी सूचना कार्य की किसी भी स्थिति में कम से कम एक सफ़ेद दाग तो होता ही है, लेकिन उसके पीछे, आमतौर पर तुरंत, अन्य साफ़ दाग़ दिखाई देते हैं, और यह बिल्कुल भी आवश्यक नहीं है कि वे सभी सफ़ेद हों।
इंटरनेट प्रौद्योगिकियों ने पहुंच को बहुत सरल बना दिया हैजानकारी के लिए, लेकिन सवाल - जो वांछित है उसे मौजूदा में कैसे लागू किया जाए - सरल नहीं किया गया है, लेकिन काम की नई "मात्रा" हासिल कर ली है। और यद्यपि PHP में नियमित अभिव्यक्तियाँ स्पष्ट रूप से स्थान को समाप्त नहीं करती हैं, वे एक महत्वपूर्ण कदम हैं।
सरल कार्य + एल्गोरिथ्म = टेम्पलेट
रेगुलर एक्सप्रेशन की पेशकश करके, PHP महत्वपूर्ण रूप सेएल्गोरिदम की सामग्री को कम कर देता है, लेकिन जो पाया जाता है उसे संसाधित करने के लिए सामान्य खोज/प्रतिस्थापन फ़ंक्शन और एल्गोरिदम ने अपना मूल्य नहीं खोया है। नए विचार सूचना क्रांति का सूत्रपात नहीं करते। आप जिस अधिकतम पर भरोसा कर सकते हैं वह एक कॉम्पैक्ट कोड और खोज क्वेरी को सही ढंग से तैयार करने की डेवलपर की क्षमता में वृद्धि है।
आपको नियमित PHP जानना और लागू करना चाहिएभाव. उदाहरण ठोस और प्रभावी हैं. लेकिन हमें इस बात से अवगत होना चाहिए कि नए खोज तंत्र के आगमन के साथ, गुरुत्वाकर्षण का केंद्र टेम्पलेट में स्थानांतरित हो गया है - एक प्रकार का तंत्र, हालांकि अनिवार्य रूप से कई सरल खोज कार्यों, स्थितियों, लूप और अन्य ऑपरेटरों की जगह ले रहा है।
पास होना:
- एक उच्च गुणवत्ता वाला और आधुनिक उपकरण अच्छा है;
- सहकर्मियों के अनुभव को देखना और उसका उपयोग करना महत्वपूर्ण है;
- वास्तविकता और आभासी विचारों का संयोजन सफलता की गारंटी है।
किसी समस्या को हल करने के लिए उसे कैसे समझा जाना चाहिए, इसका ज्ञान प्राप्त करना अक्सर विशिष्ट परिणाम से अधिक महत्वपूर्ण होता है।
PHP में नियमित अभिव्यक्ति प्रस्तुत की जाती हैंभाषा वाक्यविन्यास में कई कार्य और इंटरनेट पर कई उपयोगी उदाहरण। भाषा के विशिष्ट वाक्यविन्यास के कारण, एप्लिकेशन विकल्प केवल डेवलपर की कल्पना तक सीमित हैं, लेकिन यह ध्यान में रखा जाना चाहिए कि सभी टेम्पलेट काम नहीं करेंगे। PHP के साथ, नियमित अभिव्यक्तियों की जाँच करना आवश्यक है।
किसी वर्ण (स्ट्रिंग) के लिए सरल खोज
एक चरित्र हमेशा एक बाइट नहीं होता है, और अक्सर एक चरित्र होता हैएक प्राथमिक संकेत के रूप में, यह एक अतिरिक्त सटीक अर्थ रखता है। एन्कोडिंग कोड में दृश्यमान वर्णों को विभिन्न तरीकों से परिभाषित करती है। प्रतीक के कई विकल्प हो सकते हैं: "$" = "USD" = "cu", ... - यह सटीक अर्थ है कि कहीं कुछ, लेकिन जरूरी नहीं कि पास में, मुद्रा से जुड़ा हो। हालाँकि, सटीक अर्थ PHP वेरिएबल में भी हो सकता है, जो हमेशा "$" प्रतीक से शुरू होता है, लेकिन "USD" और "cu" से शुरू नहीं हो सकता है।
प्रोग्रामों में, प्रतीक किसी फ़ंक्शन का नाम हो सकता है(स्ट्रिंग) संदर्भ में: पहचानें और निष्पादित करें - यह गतिशील ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के क्षेत्र से है, जब निर्णय लेने के लिए PHP निर्माण, फ़ंक्शन, नियमित अभिव्यक्ति का सीधे उपयोग किया जाता है। पाया गया प्रतीक "निष्पादित" है, अर्थात, यह स्वयं निर्धारित करता है कि जिस स्थान पर यह पाया गया है वहां क्या करने की आवश्यकता है, और जिस तरह से यह "आवश्यक" समझता है।
केवल एक अक्षर/स्ट्रिंग की खोज करना इतना आसान नहीं हैगतिविधि, और प्रतीक में जितनी अधिक जानकारी होगी, उतना बेहतर होगा। आपको हमेशा भोजन पर शीर्ष दस सर्वोत्तम कीमतें खोजने, स्वादिष्ट जन्मदिन केक व्यंजनों को चुनने, या निलंबित छत के लिए एक ठेकेदार पर निर्णय लेने की आवश्यकता नहीं है।
सरल एल्गोरिदम को अनुकूलित करना अक्सर आवश्यक होता हैकठिन सूचना अंकगणित या जटिल परिस्थितियों में, जब आप जिस प्रतीक की तलाश कर रहे हैं उसे डेटाबेस से चुना जाना चाहिए, और जिस पंक्ति में इसे पाया जाना चाहिए वह सौ साइटों में है। इस मामले में, एक प्रतीक चुनने की लागत डेटाबेस से नमूना लेने के समय के बराबर है, और कहां देखना है इसकी लागत कुख्यात सौ साइटों को खोजने के समय के बराबर है।
एक अकेला प्रतीक एक वाक्यांश या कई वाक्यांश नहीं है; यह कहीं भी हो सकता है और इच्छानुसार छोटा हो सकता है। यह कैसे निर्धारित किया जाए कि वास्तव में जो पाया गया है वही वही है जो खोजा जा रहा है?
उदाहरण: मूल्य खोज
पाठ में केवल "$" चिन्ह ढूंढना ही पर्याप्त नहीं है।यह जाँचना कि उसके सामने कोई संख्या है, भी हमेशा पर्याप्त नहीं होता है। "$" प्रतीक से पहले एक अवधि या संख्या प्रदान करना यह सुनिश्चित करता है कि जिन कीमतों के सामने धन का प्रतीक है, उन्हें ध्यान में नहीं रखा जाएगा। वे कीमतें जो किसी मौद्रिक इकाई को बिल्कुल भी नहीं दर्शाती हैं, लेकिन पृष्ठ पर इसका स्पष्ट संकेत है, उन्हें भी छोड़ दिया जाएगा।
सामान्य तौर पर, समस्या को सामान्य तरीके से हल करने से एल्गोरिदम मान्यता से परे बढ़ जाएगा और इसमें बहुत समय लगेगा। इस बीच, रेगुलर एक्सप्रेशन का उपयोग करके, PHP बिना किसी समस्या के नंबर ढूंढ लेगा।
$cContents = preg_match_all("/[0-9]+([$]|usd|у.е.|уе){1}/i";
"ई-मेल देखें - 2usd; <br/>" ;
"ई-मेल ढूंढें - 2у.е.; <br/>" ;
"कार्य ई-मेल - ue2; <br/>" ;
"ई-मेल जांचें - $13", $aResult);
. "; " . implode(",", $aResult[0]) . "<br/>"।
यह उत्तर देगा: "2; 2usd, 2у.е.", लेकिन पंक्ति में कुछ भी नहीं मिलेगा: "ई-मेल जांचें - $13"।
आगे या पीछे एक प्रतीक के साथ टेम्पलेट प्रदान करके, आप अधिकांश मामलों में जल्दी से लक्ष्य प्राप्त कर सकते हैं।
$cContents = preg_match_all("/([0-9]+([$]|usd|u.e.|ue){1})|(([$]|usd|u.e.|ue){1 }[0-9] +)/i";
"ई-मेल देखें - 2usd; <br/>";
"ई-मेल ढूंढें - 2у.е.; <br/>";
"कार्य ई-मेल - ue2; <br/>";
"ई-मेल जांचें - $13", $aResult);
. "; " . implode(",", $aResult[0]) . "<br/>"।
परिणाम: "4; 2usd,2у.е.,уе2,$13"।
अनपेक्षित तर्क के बारे में
PHP दूसरों की तरह नियमित अभिव्यक्ति प्रदान करता हैउपकरण, लेकिन उन्हें इसके नियमों के अनुसार लागू करना या सिंटैक्स द्वारा प्रदान किए गए तरीके से अन्य स्ट्रिंग फ़ंक्शन का उपयोग करना बिल्कुल भी आवश्यक नहीं है।
खोज शुरू करने से पहले, आप जो खोज रहे हैं उसे बदल सकते हैंसरणी, और जिस स्थान पर खोज की जाएगी उसे प्रारंभिक मानदंड के अनुसार घटकों में विभाजित किया गया है। विस्फोट() और विस्फोट() फ़ंक्शन की एक सरल जोड़ी अक्सर समाधान को आसान और तेज़ बनाती है।
उदाहरण के लिए, प्रारंभिक कार्य के परिणामस्वरूपइस क्षेत्र के लिए पंक्तियों की एक श्रृंखला (डेटा) तैयार की गई है कि प्रत्येक गाँव ने कितने आलू एकत्र किए: NameVillage और एकत्रित मात्रा का संकेत दिया गया है, और यदि गाँव में कई उद्यम चल रहे हैं, तो NameVillage.NameEnterprise और मूल्य को "से अलग किया गया है" ;" सरणी की पंक्ति में शामिल हैं। और इसी तरह सभी उद्यमों के लिए। इस मामले में एकत्रित कुल मात्रा की गणना करना संभव नहीं होगा, लेकिन यदि आप imode(";", $aResult) करते हैं, तो एक लंबी लाइन होगी जिसमें जोड़े - NameVillage/NameVillage.NameEnterprise - एकत्रित मात्रा - होंगे ";" के माध्यम से सूचीबद्ध किया जाए। प्राप्त एक पर विपरीत करने के बाद, विस्फोट (";", $aResult) - उन सभी की एक सरणी जिन्होंने एकत्र किया और कितना एकत्र किया, फिर, लाइनों से सभी गैर-डिजिटल वर्णों को हटाकर, हमारे पास केवल संख्याएं हैं, योग जिसमें से एकत्रित की गई कुल राशि होगी।
इस उदाहरण में, PHP में रेगुलर एक्सप्रेशनवे आपको अनावश्यक चीज़ों की तलाश करने की अनुमति नहीं देते हैं; वे आवश्यक डिजिटल मूल्यों को आसानी से और आसानी से निकाल लेते हैं। तेज़ और कुशल, चाहे गाँवों और व्यवसायों के नाम कितने भी लंबे क्यों न हों। यह समाधान आदर्श नहीं है, लेकिन यह दर्शाता है कि आपको हमेशा नियमों का पालन करने की आवश्यकता नहीं है। आप अक्सर जो चाहते हैं उसे असामान्य तरीके से हासिल कर सकते हैं।
तकनीकी पक्ष से, कोडिंग से सार निकालते हुए
एल्गोरिथम का सिंटैक्स आपको यह नहीं बताता कि यह कैसे काम करता है।सचमुच दिखता है. लेकिन पेज, स्क्रिप्ट और स्ट्रिंग्स (जिसे खोजा जाता है और जिसमें खोज होती है) की समान एन्कोडिंग सुनिश्चित करके, आप कार्य को उसके तकनीकी पक्ष से परे ले जा सकते हैं।
आपको न केवल यह जानना होगा कि क्या खोजना है, बल्कि यह भी जानना है कि उसे कहां खोजना है।क्या, कब, कितनी मात्रा में, क्या और कैसे बदलना है। औपचारिक रूप से, PHP रेगुलर एक्सप्रेशन को एक पूर्ण, पूरी तरह कार्यात्मक तंत्र के रूप में डिज़ाइन किया गया है, लेकिन कई कारणों से विभिन्न भाषाओं में इसके एनालॉग्स का कार्यान्वयन भिन्न होता है। एक सामान्य नियम के रूप में, किसी विशिष्ट समस्या को हल करने के लिए किसी विशेष टेम्पलेट को किसी विशेष टूल वातावरण में स्थानांतरित करने से पहले, उच्च गुणवत्ता वाला अनुकूलन करना और स्रोत डेटा के सभी संभावित संस्करणों पर इसका परीक्षण करना आवश्यक है।
भले ही आप अपने अनुभव का उपयोग करेंPHP विकास, नियमित अभिव्यक्ति, उदाहरण, टेम्पलेट और निर्माण को बारीकी से जांचने की आवश्यकता है। भाषा की कार्यक्षमता, उसका वाक्य-विन्यास और निष्पादन वातावरण गतिशील रूप से बदल रहे हैं।
टेम्पलेट संरचना और सामग्री
जो पहले संयोजन के रूप में लिखा गया थाखोज फ़ंक्शन, सशर्त ऑपरेटर, प्रतिस्थापन, सम्मिलन, विलोपन संचालन, कुछ नियमों के अनुसार वर्णों की एक पंक्ति में समाहित है - एक नियमित अभिव्यक्ति पैटर्न। वास्तव में, एक महत्वपूर्ण राशि को कड़ाई से परिभाषित तरीके से एन्कोड किया जाता है और विशिष्ट नियमों के अनुसार निष्पादित किया जाता है।
जैसे आप कोई डिबग नहीं कर सकतेभाषा ऑपरेटर, आप नियमित अभिव्यक्ति पैटर्न को डीबग नहीं कर सकते; इस प्रक्रिया का केवल अनुकरण किया जा सकता है। एक सामान्य नियम के रूप में, स्वीकृत विकल्प है: यह काम करता है - यह काम नहीं करता है। वाक्यविन्यास बहुत सरल है, हालाँकि इसकी धारणा, विशेषकर शुरुआत में, बहुत कठिन है।
सरल अभिव्यक्ति का उदाहरण
सरल संस्करण में, पैटर्न रेखा से मेल खाता है:
$cContents = preg_match("/asdf/i", "asdf", $aResult) . "; " . इम्प्लोड(",", $aResult).
फ़ंक्शन के कारण परिणाम "1; asdf" होगाजिस पैटर्न का वह सामना करता है उसके पहले मिलान पर अपना कार्य समाप्त करता है। यदि आप स्ट्रिंग "aaasdf" और स्ट्रिंग "zzzasdfvvv" में खोजते हैं तो परिणाम समान होगा। यदि आप पहला और/या अंतिम वर्ण निर्दिष्ट करते हैं, तो परिणाम स्पष्ट होगा:
$cContents = preg_match("/^asdf/i", "asdf", $aResult) . "; " . implode(",", $aResult). "<br/>";
$cContents .= preg_match("/asdf$/", "asdf", $aResult) . "; " . implode(",", $aResult). "<br/>"।
परिणाम होगा: 1; asdf1; asdf.
अक्षर "^" और "$" इंगित करते हैं कि कहांटेम्पलेट और यह कैसे समाप्त होता है। Preg_match फ़ंक्शन का परिणाम मिलानों की संख्या है, यदि कोई त्रुटि पाई गई तो यह 0, 1 या गलत हो सकता है। तीसरे पैरामीटर, एक सरणी, में पाया गया एकमात्र तत्व शामिल है। Preg_match_all() फ़ंक्शन का उपयोग करते समय, खोज पंक्ति के अंत तक जारी रहती है।
$cContents = preg_match("/asdf/i", "asdf123asdf456asdf789", $aResult) . "; " . implode(",", $aResult). "<br/>";
$cContents .= preg_match_all("/asdf/i", "asdf123asdf456asdf789", $aResult) . "; " . implode(",", $aResult[0]) . "<br/>"।
नतीजा:
1; asdf
3; एएसडीएफ, एएसडीएफ, एएसडीएफ।
यदि आप विशेष निर्देशों का उपयोग नहीं करते हैं, तोस्ट्रिंग एन्कोडिंग और पैटर्न एन्कोडिंग की परवाह किए बिना, प्रत्येक वर्ण स्वयं को और अपनी जगह को परिभाषित करता है। प्रोग्रामर को यह सुनिश्चित करना होगा कि इन तत्वों की एन्कोडिंग एक-दूसरे और पेज की एन्कोडिंग के संबंध में सही हैं।
PHP नियमित अभिव्यक्तियों के साथ काम करने के लिए कार्य करता है
PHP में रेगुलर एक्सप्रेशन हैंएक विशिष्ट तरीके से लिखे गए वर्णों की पंक्तियाँ। आमतौर पर, अन्य प्रोग्रामिंग भाषाओं के अनुरूप, उन्हें "/" ... "/" वर्णों में लिखा जाता है और उद्धरण चिह्नों में रखा जाता है; एल्गोरिदम के आधार पर, सिंगल और डबल का उपयोग किया जा सकता है।
मुख्य php फ़ंक्शन प्रीग मैच नियमितअभिव्यक्ति एक पैटर्न मिलान के रूप में उपयोग करती है और पहली बार पाए जाने पर रुक जाती है, _all प्रत्यय के साथ इसका संस्करण सभी मिलानों की खोज करता है और उनमें से एक सरणी लौटाता है। प्रीग रिप्लेस फ़ंक्शन पाए गए प्रत्येक पैटर्न मिलान को प्रतिस्थापित करता है और सरणियों के साथ काम कर सकता है, जिससे आप अपनी खोज को डिज़ाइन कर सकते हैं और विभिन्न तरीकों से प्रतिस्थापित कर सकते हैं।
नियमित कर्मचारियों के साथ काम करने के दिलचस्प विकल्पअभिव्यक्तियों को preg_replace_callback फ़ंक्शन का उपयोग करके विकसित किया जा सकता है, जो प्रतिस्थापित किए जाने वाले टेक्स्ट को नहीं, बल्कि उस फ़ंक्शन के नाम को स्वीकार करता है जो ऐसा प्रतिस्थापन करेगा। व्यावहारिक महत्व के अलावा, टेम्पलेट जाँच तंत्र को यहां लागू किया जा सकता है, जो बाद के विकास और डिबगिंग में महत्वपूर्ण भूमिका निभाता है।
नियमित अभिव्यक्ति के अनुप्रयोग का दायरा
चूँकि हाइपरटेक्स्ट भाषाएँ हैंऔपचारिक जानकारी, काफी हद तक वे स्रोत सामग्री हैं। बड़ी मात्रा में जानकारी को प्रभावी ढंग से संसाधित करने के लिए बड़ी संख्या में टेम्पलेट और डिज़ाइन विकसित किए गए हैं। इस कार्य का एक महत्वपूर्ण हिस्सा विभिन्न सामग्री प्रबंधन प्रणालियों (सीएमएस) में निर्मित तंत्रों द्वारा किया जाता है।
इसमें कोई आश्चर्य नहीं कि कई सीएमएस मानक बन गए हैंनिर्माण स्थलों के लिए वास्तविक रूप से, और, विकास कंपनियों द्वारा बनाए रखा (अद्यतन) किए जाने के कारण, वे इन-हाउस टेम्पलेट विकास करना आवश्यक नहीं बनाते हैं। हालाँकि, ऐसी प्रणालियों के बाहर, नियमित अभिव्यक्ति के साथ अनुभव बहुत उपयोगी है।
नियमित अभिव्यक्ति और वास्तविक जानकारी
नियमित अभिव्यक्ति के अनुप्रयोग का एक महत्वपूर्ण क्षेत्रPHP को PHPOffice लाइब्रेरीज़ के आगमन से आकार मिला था। दस्तावेज़ों और स्प्रेडशीट के साथ काम करना हमेशा महत्वपूर्ण रहा है और है, और OOXML मानक ने न केवल वास्तविक दस्तावेज़ों को पार्स करना संभव बनाया है, बल्कि उन्हें प्रोग्रामेटिक रूप से उत्पन्न करना भी संभव बनाया है।
हाइपरटेक्स्ट भाषाओं और PHP के विकास के लिए धन्यवादविशेष रूप से, "मानक रूप" दस्तावेजों के "उत्पादन" को स्वचालित करने का एक वास्तविक अवसर है, उदाहरण के लिए, चालान, रिपोर्ट, व्यावसायिक योजनाएं और अन्य सूचना वस्तुएं, जिनकी संरचना और सामग्री को वास्तव में औपचारिक और स्वचालित किया जा सकता है।
भाषा का वर्णन करने के लिए OOXML के उपयोग के संबंध मेंनियमित अभिव्यक्तियों को विकसित करने की प्रक्रिया में पहले स्थान पर पारंपरिक रूप से HTML और CSS मार्कअप भाषाओं के साथ काम करने से महत्वपूर्ण अंतर हैं। एक वास्तविक दस्तावेज़ में, मार्कअप के अलावा और वास्तविक सामग्री के अलावा, कई विवरण होते हैं। उदाहरण के लिए, किसी प्रोग्राम द्वारा स्वचालित रूप से बनाए गए दस्तावेज़ में सख्त और सटीक सामग्री होगी। किसी व्यक्ति द्वारा निर्मित या उसके द्वारा संसाधित किए गए दस्तावेज़ में कई टैग के अनुसार वर्गीकृत सामग्री होगी। किसी दस्तावेज़ के साथ कोई भी कार्य इस तथ्य की ओर ले जाता है कि इसका शब्दार्थ समान रह सकता है, लेकिन विभिन्न निर्माणों की एक अलग संख्या के अनुसार अंदर वर्णित है।
प्राकृतिक जानकारी एवं स्थिति
एक व्यक्ति हमेशा किसी समस्या को सुलझाने में रुचि रखता है,जिसका उत्पादन सूचना है और परिणामस्वरूप, वही जानकारी दी जाएगी। दस्तावेज़ के रूप में समस्या विवरण प्रस्तुत करने पर, एक व्यक्ति को कुछ शब्दार्थ प्राप्त होते हैं, जो विशेषज्ञों द्वारा स्पष्ट किए जाने पर (परिवर्तन करना, शब्दों को स्पष्ट करना, हटाना, संपादित करना) न केवल एक दस्तावेज़ के कई रूपों की ओर ले जाता है, बल्कि इसके भिन्न सामग्री वाले संस्करण.
विशेष रूप से, "हल करें" वाक्यांश द्वारा प्रस्तुत कार्यद्विघात समीकरण", संपादन के बाद इस तरह नहीं दिखेगा: "एक द्विघात समीकरण को हल करें"। यदि पहली त्रुटि को पहले ठीक किया गया था, और फिर दूसरी, तो OOXML शैली में प्राकृतिक जानकारी इस तरह दिख सकती है: "[हल करें][ ] [द्विघात][ई] [ ] [चीयर्स][v][राय]", लेकिन यह कोई गारंटी नहीं है कि OOXML टैग में कार्य ठीक इसी तरह दिखेगा (वर्ग कोष्ठक टैग कोष्ठक का अनुकरण करते हैं)।
इसके बाद जानकारी आसानी से जुटाई जा सकेगीप्रत्येक कार्य संपादन प्रक्रिया, लेकिन हर बार यह प्रक्रिया एक अलग एल्गोरिदम के अनुसार निष्पादित की जाएगी। नियमित अभिव्यक्तियाँ, सूचना कार्यों को औपचारिक बनाने के लिए एक प्रकार के उपकरण के रूप में, अनिवार्य रूप से औपचारिक हाइपरटेक्स्ट संरचनाओं से प्राकृतिक जानकारी तक का मार्ग बन गई हैं।