2010-09-02 17 views
43

संभव डुप्लिकेट:
Best methods to parse HTMLपीएचपी पार्स एचटीएमएल कोड

मैं एक PHP चर में आयोजित करता है, तो यह कुछ की तरह एचटीएमएल कोड कैसे पार्स कर सकते हैं:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG! 

मैं चाहता हूँ पर केवल उस पाठ को प्राप्त करें जो शीर्षक के बीच है और मैं समझता हूं कि नियमित अभिव्यक्तियों का उपयोग करना एक अच्छा विचार नहीं है।

+4

@ हर कोई जिसने इसे बंद कर दिया है वह डुप्लिकेट है। यह अलग है क्योंकि ओपी टेक्स्ट 'टी 1, टी 2, टी 3' नहीं चाहता है लेकिन एक शीर्षक के बाद पाठ समाप्त होता है और अगले शीर्षक से पहले शुरू होता है। जैसे 'Lorem ipsum.'। तो, * यह * अलग है। कृपया देख लीजिये। – shamittomar

उत्तर

105

उपयोग पीएचपी Document Object Model:

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    $DOM = new DOMDocument; 
    $DOM->loadHTML($str); 

    //get all H1 
    $items = $DOM->getElementsByTagName('h1'); 

    //display all H1 text 
    for ($i = 0; $i < $items->length; $i++) 
     echo $items->item($i)->nodeValue . "<br/>"; 
?> 

इस रूप में आउटपुट:

T1 
T2 
T3 

[संपादित करें]: ओपी स्पष्टीकरण के बाद:

यदि आप चाहते हैं सामग्री की तरह Lorem ipsum।

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    echo preg_replace("#<h1.*?>.*?</h1>#", "", $str); 
?> 

इस आउटपुट: आदि, आप सीधे इस regex का उपयोग कर सकते हैं

में प्रकाशित किया ipsum.The त्वरित लाल लोमड़ी ...... आलसी भूरे रंग के मेंढक पर कूदता है

+0

धन्यवाद, लेकिन मुझे

के बीच पाठ प्राप्त करने की आवश्यकता है: "Lorem ipsum।", "त्वरित लाल लोमड़ी ..." आदि। इसलिए एच 1 टैग के बीच पाठ नहीं, बल्कि के बीच का पाठ टैग और एक शुरुआती

। – Francisc

+0

@ फ्रांसिस्क, मैंने जवाब अपडेट किया है। – shamittomar

+0

यह करीब है, धन्यवाद। मैं और अधिक स्पष्ट होने की कोशिश करूंगा: मैं शीर्षक के बीच पाठ प्राप्त करना चाहता हूं, इसकी लंबाई गिनना चाहता हूं और यह तय कर सकता हूं कि मैं इसका हिस्सा छिपाना चाहता हूं या नहीं। आपका उत्तर बहुत उपयोगी है हालांकि। लेकिन मैं जो करना चाहता हूं वह सब पाठ रखता है, इसके हिस्से को छिपाने के लिए बस कुछ HTML जोड़ें। – Francisc

संबंधित मुद्दे