Guten Abend.
Ich wende mich hier an euch, da sich mir während der Arbeit heute eine kleine Frage aufgebahnt hat.
Ich darf für Arbeit eine HTML-Seite parsen. Gewisse Daten aus dem Quelltext lesen. Daten, die allerdings nicht unbedingt zweifelsfrei in einem bestimmten Div sind.
Nun habe ich zuerst mit substr, str_replace, strpos zur Genüge herumgebastelt. Es funktioniert soweit auch.
Danach hatte ich allerdings das PHP-DOMDocument-Objekt entdeckt, und eine Sonne ging auf in meinem Herzen. *g*
Was mir bei diesem allerdings aufgefallen ist - Es scheint alle restlichen HTML-Tags aus einem Node zu filtern. Leider.
Hat denn bereits jemand mit dem DOMDocument-Objekt gearbeitet, und hat möglicherweise dasselbe Problem erlebt?
Als Beispiel:
$this->bbcode_second_pass_code('', 'error_reporting( 0 );
$html = new DOMDocument();
$html->loadHTMLFile( "http://shop.alltron.ch/tabid/466/Default.aspx?ID=1116" );
$tags = $html->getElementsByTagName('td');
foreach ($tags as $tag) {
if ( $tag->getAttribute('class') == "beschreibung" ) {
echo $tag->nodeValue;
break;
}
}')
Die davon erzeugte Ausgabe:
Zitat:
Adaptec 2904 CD Kit SCSI-Controller Bis zu 10 MB/s Übertragungsrate Externer DB50-pin Mini Anschluss Die Karte einfach in einen PCI-Steckplatz einstecken und SCSI-Peripheriegeräte anschliessen. Fertig. Systemvoraussetzungen PCI Steckplatz Microsoft Windows XP, 2000 Professional, Me, NT, 98, 95, 3.1 DOS ab 6.0 Mac ab OS 8.5 Technische Daten Allgemein Protokolle - SCSI-1, SCSI-2, Fast SCSI-2 Anschlussart - 32-bit PCI Anschlüsse intern - 50-pin Anschlüsse extern - DB50mini Max. Geräteanzahl - 7 Max. Übertragungsrate - bis zu 10 MByte/sec
Eben dieses Beispiel meinte ich damit. Die Ausgabe des td-Nodes mit dem class-Attribut=beschreibung wird von allen HTML-Tags befreit, was für mich nicht wirklich praktisch ist, leider.
Ich hoffe, dass mein Problem einigermassen verständlich ist, und mir vielleicht sogar jemand weiterhelfen kann.
Mit freundlichen Grüssen,
Harthas
P.S. Einen Hinweis auf reguläre Ausdrücke brauche ich per Se nicht. Ist damit durchaus ebenfalls möglich, ich weiss. Nur mag ich Regex nicht sonderlich. ;-)