2009-05-09 10 views
1

Ich möchte eine einfache, aber nicht triviale Manipulation von DOM-Elementen mit PHP machen, aber ich bin verloren.DOM-Manipulation mit PHP

Nehmen Sie eine Seite wie Wikipedia an, wo Sie Absätze und Titel haben (<p>, <h2>). Sie sind Geschwister. Ich möchte beide Elemente nacheinander aufnehmen.

Ich habe versucht GetElementbyName aber dann haben Sie keine Möglichkeit, Informationen zu organisieren. Ich habe versucht DOMXPath->query(), aber ich fand es wirklich verwirrend.

Parsen Genau so etwas wie:

<html> 
    <head></head> 
    <body> 
    <h2>Title1</h2> 
    <p>Paragraph1</p> 
    <p>Paragraph2</p> 
    <h2>Title2</h2> 
    <p>Paragraph3</p> 
    </body> 
</html> 

in:

 
Title1 
Paragraph1 
Paragraph2 
Title2 
Paragraph3 

Mit ein paar Bits von HTML-Code, den ich zwischen allen nicht brauchen.

Vielen Dank. Ich hoffe, die Frage sieht nicht wie Hausaufgaben aus.

Antwort

1

Ich denke DOMXPath->query() ist der richtige Ansatz. Dieser XPath-Ausdruck gibt alle Knoten zurück, die entweder <h2> oder <p> auf derselben Ebene sind (da Sie angegeben haben, dass sie Geschwister sind).

/html/body/*[name() = 'p' or name() = 'h2']

Die Knoten werden als node list in der richtigen Reihenfolge (Dokumentreihenfolge) zurückgeführt werden. Sie können dann eine foreach-Schleife über das Ergebnis konstruieren.

+0

Genau das, was ich wollte. Ich musste ein paar Divs einbeziehen, aber es funktionierte perfekt. Vielen Dank. – Sortea2

+0

Ich bin froh zu helfen. – Tomalak

1

Ich habe ein paar Mal einfach html dom von S.C.Chen.

Perfekte Klasse für Zugriff dom Elemente.

Beispiel:

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all images 
foreach($html->find('img') as $element) 
     echo $element->src . '<br>'; 

// Find all links 
foreach($html->find('a') as $element) 
     echo $element->href . '<br>'; 

Prüfen Sie es hier. simplehtmldom

Kann mit zukünftigen Projekten helfen

1

Versuchen Sie einen Blick auf diese Bibliothek mit und entsprechenden Projekt:

Simple HTML DOM

Auf diese Weise können Sie eine Online-Webseite oder eine HTML-Seite von Dateisystem öffnen und Zugriff auf seine Elemente über Klassennamen, Tag-Namen und IDs. Wenn Sie mit jQuery und seiner Syntax vertraut sind, benötigen Sie keine Zeit, um sich an diese Bibliothek zu gewöhnen.