• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

DOM über PHP manipulieren

blabla333

Mitglied
Ich möchte per PHP den DOM ändern. Und zwar wird nach allen Bildern gesucht und diese dann um ein entsprechendes HTML-Gerüst erweitert. Derzeit mache ich das so:

PHP:
$dom = new DOMDocument();
$dom->loadHTML( $inhalt );

for ( $i = $dom->getElementsByTagName( 'img' )->length; $i > 0; --$i ) {
    $image = $dom->getElementsByTagName( 'img' )->item( $i-1 );
    $replacement = $dom->createDocumentFragment();

    $container = '<div class="wrap"><figure id="eine_id>';
    $container .= '<img src="bilder/'.$image_file.'.jpg" />';
    $container .= '<figcaption class="klasse3">'.$bild_beschreibung.'</figcaption>';
    $container .= '</figure>';
    $container .= '</div>';
 
    $replacement->appendXML( $container );
    $image->parentNode->replaceChild( $replacement, $image );
}
$inhalt = $dom->saveHTML();

Ich denke aber, dass meine Art des Generierens wahrscheinlich nicht korrekt ist, oder?
Ich meine, man muss doch die Elemente sicher auch als Knoten erstellen können? Für mich liegt die Schwierigkeit vor allem darin, dass ich nur einen Teil (nämlich das gesuchte Element) ersetze, d.h. ich kann irgendwie nicht einfach appendChild verwenden oder so.

Vielleicht kann mir ja anhand des obigen Beispiels jemand zeigen, wie man ein HTML-Gerüst mit den entsprechenden Klassen und IDs korrekt erstellt.
 
Ich verstehe den Sinn des Ganzen gerade nicht. PHP generiert HTML serverseitig, während DOM-Manipulationen clientseitig nach Auslieferung der Seite stattfinden.

Du kannst HTML natürlich auch dynamisch per PHP erzeugen, aber vor dem Aufbau der Seite und nicht nachträglich. Denn bei einem Seitenrefresh sind alle Variablenbelegungen wieder gelöscht. Aus eben diesem Grunde gibt es ja Ajax.
 
Nein, die ganze Verarbeitung findet serverseitig statt - deshalb hier das php-Forum. Ein Artikel wird per PHP aus einer DB eingelesen ( = $inhalt) und soll weiterverarbeitet werden: Alle Bilder innerhalb des Artikels sollen wie in dem Codeschnipsel "erweitert".
Ich denke nur, dass es so, wie es jetzt ist nicht "State-of-the-art" ist...
 
Zurück
Oben