Wrap all images with a div using a DOMDocument

I have a large html document with multiple images. I want to wrap all the images inside div.wrapped . How do I do this with a DOMDocument ?

I saw the appendChild method, but that only adds the elements to the end. How can I insert one in the middle and then move the image inside it?

+7
source share
1 answer

I have never used a DOMdocument before, but I think you mean something like this:

 $html = <<<EOF <html> <head> <title>:( -> :)</title> </head> <body> <img src="www.com" /> <div class="random"> <img src="www.ru" /> </div> </body> </html> EOF; $dom = new DOMDocument(); $dom->loadHTML($html); //Create new wrapper div $new_div = $dom->createElement('div'); $new_div->setAttribute('class','wrapper'); //Find all images $images = $dom->getElementsByTagName('img'); //Iterate though images foreach ($images AS $image) { //Clone our created div $new_div_clone = $new_div->cloneNode(); //Replace image with this wrapper div $image->parentNode->replaceChild($new_div_clone,$image); //Append this image to wrapper div $new_div_clone->appendChild($image); } 
+22
source

All Articles