Wrap all images with a div using DOMDocument

前端 未结 1 1006
太阳男子
太阳男子 2020-12-16 21:02

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

相关标签:
1条回答
  • 2020-12-16 21:45

    I never used 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);
    }
    
    0 讨论(0)
提交回复
热议问题