मैं इस कोड का उपयोग कर रहा हूं:

$results = '<div class="collection__list" data-type="Other1">DIV1</div><div class="collection__list" data-type="Other2">DIV2</div>'; 

$html = str_get_html($results);

$articles = $html->find('div[class=collection__list, data-type=Other1]', 0);

echo $articles; 

और कुछ भी प्रिंट नहीं होता है। क्या यह "DIV1" div को प्रिंट करने का अनुमान नहीं है?

0
Brent Heigold 23 पद 2018, 01:14

1 उत्तर

सबसे बढ़िया उत्तर

आप साधारण HTML DOM पार्सर के साथ कई विशेषताओं की खोज नहीं कर सकते। शायद यह बहुत आसान है? यदि आप अंतर्निर्मित डोम पार्सर का उपयोग करते हैं, तो यह ठीक काम करता है, हालांकि इसे XPath के साथ कुछ परिचितता की आवश्यकता होती है:

<?php
$results = '<div class="collection__list" data-type="Other1">DIV1</div><div class="collection__list" data-type="Other2">DIV2</div>'; 
$dom = new DomDocument();
$dom->loadHTML($results, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
$xpath = new DomXpath($dom);
$nodes = $xpath->query("//div[@class='collection__list' and @data-type='Other1']/text()");
foreach ($nodes as $node) {
    echo $node->nodeValue;
}

मुझे लगता है कि कोई खोज पर लूप कर सकता है, लेकिन वास्तव में अंतर्निहित कार्यों का उपयोग करना एक अधिक मजबूत और मानकीकृत समाधान होने वाला है, या कम से कम एक आधुनिक समाधान का उपयोग करना है। यह "लाइब्रेरी" वास्तव में अतीत से एक अवशेष है और किसी भी आधुनिक प्रोग्रामिंग प्रथाओं के अनुरूप नहीं है।

<?php
$results = '<div class="collection__list" data-type="Other1">DIV1</div><div class="collection__list" data-type="Other2">DIV2</div>'; 
$html = str_get_html($results);
foreach ($html->find('div[class=collection__list]') as $article) {
    if ($article->attr["data-type"] === "Other1") {
        echo $article;
        break;
    }
}
0
miken32 23 पद 2018, 04:12