Michael: kleine Fortschritte - DOM-Elemente verarbeiten?

Beitrag lesen

Heyho!

# Wo kommt $dom_ele her?
$datas =$dom_ele->getElementsByTagName('div');

Tschuldigung, ein Copy&Past-Fehler.

(..) dabei ist DOMNodeList::item()

Teil des Spezifikationsinterfaces

Ich habe versucht item() zu verwenden, habe aber immer Fehler bekommen. Auf php.net steht leider gar nichts dazu. Ich weiß nicht wie man damit arbeitet.

Deine foreach-Schleife kann

funktionieren, wird auch funktionieren, muss es aber -von der

Spezifikation her- nicht.

Ich habe das foreach()-Konstrukt von php.net. Erscheint mir auch logisch und kann nicht falsch sein wenn es da so steht, dachte ich mir.

Was du mir mit den Links sagen willst versteh ich leider nicht, mein englisch ist nicht so gut. Wie sollte ich es denn machen?

Folgendes funktioniert:

$needle = 'foobar';  
$doc = new DOMDocument();  
// $content ist die per CURL eingelesene HTML-Datei  
$doc->loadHTML($content);  
// alle divs finden - '*' für alle Elemente  
$datas = $doc->getElementsByTagName('div');  
// array anlegen  
$array = array();  
// counter mitschleifen  
$i = 0;  
// divs verarbeiten  
foreach($datas as $data){  
    if($data->getAttribute('class') == $needle){  
        // array erweitern  
        $array[$i] = array();  
        // Überschrift finden:  
        $header = $data->getElementsByTagName('h3');  
        foreach($header as $data_header){  
            $array[$i]['header'] = $data_header->nodeValue;  
            break;  
        }  
        // Daten finden:  
        $tempe = $data->getElementsByTagName('dt');  
        foreach($tempe as $data_temp){  
            if(substr($data_temp->getAttribute('class'), 0, 5) == 'temp-'){  
                $array[$i]['temp'] = substr($data_temp->getAttribute('class'), 5, 8);  
            }  
        }  
        $i++;  
    }  
}  
  
print_r($array);

Wie müsste ich es richtig machen? Vielen Dank!

LG