Use an HTML parser. NOT regular expressions.
समस्या नियमित अभिव्यक्ति के साथ कि वे नेस्ट संरचनाओं से मेल नहीं कर सकते हैं। अपने रेगुलर एक्सप्रेशन से मान लिया जाये कि एक भी <div>
और उसके बंद होने वाले टैग से मेल खाना चाहिए, वहाँ कोई रास्ता नहीं है सही ढंग से इस इनपुट मैच के लिए है:
<div id="a">
<div id="b">
Foo
</div>
</div>
<div id="c">
Bar
</div>
क्योंकि अगर आपका रेगुलर एक्सप्रेशन लालची है, यह दो ऊपरवाला divs की भरपाई कर देंगे, और यह ungreedy अगर , यह सही अंत टैग से मेल नहीं खाएगा।
इसलिए, आपको एक HTML पार्सर का उपयोग करना चाहिए। PHP के साथ, DOMDocument::loadHTML
या DOMDocument::loadHTMLFile
प्रत्येक एक काफी अच्छी नौकरी करता है। (आप उत्पन्न होने वाली चेतावनियों को "सुरक्षित रूप से" अनदेखा कर सकते हैं: वे केवल मार्कअप त्रुटियां हैं, और जेनरेट DOMDocument
ऑब्जेक्ट बहुत ठीक होना चाहिए।)
चूंकि PHP getElementById काम करने के लिए दर्द है, तो आप इसका उपयोग कर सकते हैं DOMXpath एक ही उद्देश्य के लिए:
<?php
$url = "http://urlchecker.net/html/demo.html";
$d = new DOMDocument();
$d->loadHTMLFile($url);
$xpath = new DOMXPath($d);
$myNews = $xpath->query('//@id="news-id-160346"')->item(0);
?>
हैलो मैंने सभी उत्तरों का प्रयास किया था लेकिन सफल नहीं चेतावनी: DOMDocument :: loadHTMLFile() [domdocument.loadhtmlfile]: अप्रत्याशित अंत टैग: http://urlchecker.net/html/demo.html में, लाइन: लाइन 10 – Thoman
पर /home/urlcheck/public_html/html/test.php में 26 @ महिला: यह वास्तव में सफल रहा है। loadHTMLFile बस आपको पार्सिंग के दौरान सामना की जाने वाली समस्याओं को बताता है। आप इसे '@' ऑपरेटर के साथ बंद कर सकते हैं: '@ $ d-> loadHTMLFile ($ url);' – zneak
मैं इसे आज़माता हूं लेकिन यह कोड id = 'news-id-160346' – Thoman