2013-03-03 4 views
6

का उपयोग कर कक्षा के नाम से सभी तत्व प्राप्त करें इस प्रश्न को कई बार उत्तर दिया गया है लेकिन मुझे अभी भी टुकड़े एक साथ नहीं लगते हैं।DOMDocument

मैं प्रत्येक वर्ग के नाम से नोड मान प्राप्त करना चाहता हूं। उदाहरण

<td class="thename"><strong>32</strong></td> 
<td class="thename"><strong>12</strong></td> 

के लिए मैं 32 और 12. मुझे लगता है इस पाश के लिए की तरह है, लेकिन यकीन है कि यह लागू करने के बारे में जाने के लिए वास्तव में कैसे नहीं करने के लिए की आवश्यकता है हड़पने के लिए चाहते हैं। यहां मेरे पास अब तक

$domain = "http://domain.com"; 
$dom = new DOMDocument(); 

$dom->loadHTMLFile($domain); 
$xpath = new DomXpath($dom); 
$div = $xpath->query('//*[@class="thename"]')->item(0); 
$stuff = $div ->textContent; 

echo($stuff); 

उत्तर

11

क्या आप यह देख रहे हैं?

$result = array(); 

    $doc = <<< HTML 
    <html> 
     <body> 
      <div>1 
       <span>2</span> 
      </div> 
      <div>3</div> 
      <div>4 
       <span class="class1"><strong>5</strong></span> 
       <span class="class1"><strong>6</strong></span> 
       <span>7</span> 
      </div> 
     </body> 
    </html> 
HTML; 
    $classname = "class1"; 
    $domdocument = new DOMDocument(); 
    $domdocument->loadHTML($doc); 
    $a = new DOMXPath($domdocument); 
    $spans = $a->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]"); 

    for ($i = $spans->length - 1; $i > -1; $i--) { 
     $result[] = $spans->item($i)->firstChild->nodeValue; 
    } 

    echo "<pre>"; 
    print_r($result); 
    exit(); 
+1

कि चाल करने के लिए लगता है में ऐसा किया। क्या आप xpath क्वेरी को तोड़ सकते हैं। ये सब मेरे लिए नया है। धन्यवाद – Sammy

+0

मैं [XPath 1.0] का उपयोग करता हूं (http://cweiske.de/tagebuch/XPath%3A%20Select%20element%20by%20class.htm), इससे कोई फर्क नहीं पड़ता। आप अपने भिन्नता '$ query =' // * [@ class = "'$ className' ']]'; ' – user2112300

+0

$ img_tags = $ टैग-> क्वेरी (" // * [शामिल हैं (concat (' ' , सामान्यीकृत-स्थान (@class), ''), 'thumbBlock')]/div/div/a/img "); यह मुझे 500 आंतरिक सर्वर त्रुटि – Luckyy

3

मैं बस php

$dom = new DOMDocument('1.0'); 
      $classname = "product-name"; 

      @$dom->loadHTMLFile("http://shophive.com/".$query); 
      $nodes = array(); 
      $nodes = $dom->getElementsByTagName("div"); 
      foreach ($nodes as $element) 
      { 
       $classy = $element->getAttribute("class"); 
       if (strpos($classy, "product") !== false) 
       { 
         echo $classy; 
         echo '<br>'; 
       } 

      } 
+1

देता है यदि स्ट्रिंग में आपकी उत्पाद श्रेणी पहली श्रेणी है तो क्या होगा? – MastaBaba

+0

अपना मुद्दा नहीं मिला? –

+0

आप "उत्पाद" के लिए स्ट्रिंग स्थिति की जांच करते हैं, भले ही यह 0 से बड़ा हो। लेकिन, यदि यह पहली स्थिति में है, तो आपकी जांच विफल नहीं होगी (स्ट्रॉप्स ($ उत्तम दर्जे का, "उत्पाद")> 0) में? – MastaBaba

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