PHP में HTML/XML कैसे पार्स करें? वो तरीके जो आपके घंटे बचाएंगे
\nक्या आपने कभी किसी दूसरी वेबसाइट से डेटा निकालने या किसी जटिल XML कॉन्फ़िग को समझने की कोशिश की है? अगर हाँ, तो आप जानते हैं कि strpos() और explode() से मैन्युअल पार्सिंग कितनी जल्दी एक बुरा सपना बन जाती है। एक टैग में गलती हुई नहीं कि पूरा पार्सर टूट गया। अच्छी खबर यह है कि PHP में कई शक्तिशाली और सुंदर समाधान मौजूद हैं। बुरी खबर यह है कि यह तय करना मुश्किल हो सकता है कि किसे चुनें। इस लेख में, हम PHP में HTML और XML पार्स करने के सभी मुख्य तरीकों को विस्तार से समझाएंगे, उनकी परफॉरमेंस और उपयोगिता की तुलना करेंगे, ताकि आप समझ सकें कि अपने टूलबॉक्स में कौन सा टूल रखना है।
खुद का पार्सर क्यों नहीं बनाना चाहिए?
\nशुरुआती लोगों का पहला विचार होता है कि रेगुलर एक्सप्रेशन से अपना खुद का पार्सर बनाया जाए। हाँ, एकदम सही HTML वाले एक बार के काम के लिए यह चल सकता है। लेकिन जैसे ही पेज पर नेस्टेड टैग, कमेंट या (भगवान न करे) गलत HTML (जो असली दुनिया में 90% होता है) आते हैं, रेगुलर एक्सप्रेशन फेल हो जाते हैं। दर्जनों पैटर्न डीबग करने में समय बर्बाद करने के बजाय, तैयार लाइब्रेरी का उपयोग करें। उन्होंने पहले ही आपकी सारी समस्याएं हल कर दी हैं।
\n\nतरीका #1: DOMDocument — HTML के लिए "हैवी आर्टिलरी"
\nDOMDocument एक बिल्ट-इन PHP एक्सटेंशन है जो डॉक्यूमेंट का पूरा DOM ट्री बनाता है। इसकी सबसे बड़ी खासियत यह है कि यह गलत HTML के साथ भी काम कर सकता है। आप बस इसे एक स्ट्रिंग देते हैं, और यह उसे ठीक करने की कोशिश करता है। असली वेब पेजों को पार्स करने के लिए यह एकदम सही है।
यहाँ एक क्लासिक उदाहरण है: HTML से सभी लिंक निकालना।
\n<?php\n$html = '<a href="https://pythonlib.ru">PythonLib</a>\n <a href="https://php.net">PHP.net</a>';\n\n$dom = new DOMDocument();\n// गलत HTML पार्स करने की एरर को दबाएं\nlibxml_use_internal_errors(true);\n$dom->loadHTML($html);\nlibxml_clear_errors();\n\n$xpath = new DOMXPath($dom);\n$links = $xpath->query('//a/@href');\n\nforeach ($links as $link) {\n echo $link->nodeValue . "\\n";\n}\n?>\n फायदे:
\n- \n
- किसी भी, यहां तक कि टूटे-फूटे HTML के साथ भी काम करता है। \n
- XPath का पूरा सपोर्ट — जटिल क्वेरी कर सकते हैं। \n
- PHP में बिल्ट-इन है, इंस्टॉल करने की जरूरत नहीं। \n
नुकसान:
\n- \n
- बड़े डॉक्यूमेंट के लिए ज्यादा मेमोरी लेता है। \n
- सरल कार्यों पर विकल्पों की तुलना में धीमा। \n
- सरल डेटा निकालने के लिए API थोड़ा बोझिल है। \n
तरीका #2: SimpleXML — XML के लिए हल्कापन और सुंदरता
\nअगर आप पक्के तौर पर वैध XML (RSS फीड, API रिस्पॉन्स, कॉन्फ़िग) के साथ काम कर रहे हैं, तो SimpleXML आपका सबसे अच्छा दोस्त है। यह XML को एक ऑब्जेक्ट में बदल देता है, जिसके एलिमेंट्स को प्रॉपर्टी की तरह और एट्रीब्यूट्स को ऐरे एलिमेंट की तरह एक्सेस किया जा सकता है।
RSS फीड पार्स करने का उदाहरण:
\n<?php\n$xml = '<rss>\n <channel>\n <item>\n <title>खबर 1</title>\n <link>https://example.com/1</link>\n </item>\n <item>\n <title>खबर 2</title>\n <link>https://example.com/2</link>\n </item>\n </channel>\n</rss>';\n\n$feed = simplexml_load_string($xml);\n\nforeach ($feed->channel->item as $item) {\n echo $item->title . ': ' . $item->link . "\\n";\n}\n?>\n फायदे:
\n- \n
- बेहद सरल और सहज सिंटैक्स। \n
- न्यूनतम मेमोरी खपत। \n
- कॉन्फ़िगरेशन फ़ाइलें पढ़ने के लिए बहुत अच्छा। \n
नुकसान:
\n- \n
- गलत HTML के साथ काम नहीं कर सकता। \n
- नोड्स जोड़ना/बदलना मुश्किल है। \n
- XPath का कोई सपोर्ट नहीं (हालांकि
SimpleXMLE