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 kannfunktionieren, 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