2011-06-27 13 views
5

में एक div सामग्री कैसे प्राप्त कर सकता हूं मेरे पास php (string) में div है और मैं सामग्री प्राप्त करना चाहता हूं।मैं php

उदाहरण के लिए

:

<div id="product_list" style="width:100%; float:none;"> 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
</div> 

और मैं

<div> 
    bla bla bla 
</div> 
    bla bla 

शैली बदल रहा है चाहता हूँ, मैं केवल div id पता है।

यह मेरा कोड, turbod स्रोत के रूप में एक ही है अद्यतन और परिणाम भी एक ही हैं।

तो यह मूल html

$doc = new DOMDocument(); 
$doc->loadHTML($buffer); 
$id = $doc->getElementById('product_list') 

है और इस कोड के बाद मैं निम्नलिखित मिल: link

+0

हूँ मुझे लगता है कि अपने 'अपडेट' कोड में अंतिम पंक्ति की घोषणा '$ id' के लिए अर्धविराम का पालन करना चाहिए को सही PHP वाक्यविन्यास? – HelpingHand

उत्तर

16

उपयोग php DOMDocument वर्ग। http://www.php.net/manual/en/class.domdocument.php

$dom = new DOMDocument(); 

$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divContent = $xpath->query('//div[id="product_list"]'); 
+0

क्या आपके द्वारा यहां चिपकाए गए कोड को चलाने के लिए कोई बाहरी पुस्तकालय आवश्यक है? मैं यह पूछता हूं क्योंकि कोड सीधे मेरे सर्वर पर काम नहीं कर रहा है। – HelpingHand

+0

नहीं, लेकिन libxml PHP एक्सटेंशन की आवश्यकता है। http://www.php.net/manual/en/dom.requirements.php अपने phpinfo() की जांच करें। क्या आपको कोई त्रुटि संदेश मिला है? – turbod

1

एक XML/HTML टुकड़ा बचाने के लिए आप प्रत्येक बच्चे नोड को बचाने की जरूरत:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[@id="product_list"]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 
var_dump($result); 

आउटपुट:

string(74) " 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
" 

आप केवल पाठ सामग्री की जरूरत है, आप कर सकते हैं इसे सीधे लाएं:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
var_dump(
    $xpath->evaluate('string(//div[@id="product_list"])') 
); 

आउटपुट:

string(63) " 

     bla bla bla 

     bla bla   
" 
-1

है ना पर्याप्त करने के लिए ...

$id->nodeValue