2011-12-08 38 views
7

Tôi có tài liệu html lớn, có nhiều hình ảnh. Tôi muốn bọc tất cả các hình ảnh bên trong div.wrapped. Làm cách nào để thực hiện điều này với DOMDocument?Bọc tất cả hình ảnh bằng div bằng DOMDocument

Tôi đã xem phương thức appendChild nhưng chỉ thêm phần tử vào cuối. Làm thế nào tôi có thể chèn một ở giữa, và sau đó di chuyển hình ảnh bên trong nó?

Trả lời

22

tôi không bao giờ sử dụng DOMDocument trước đây, nhưng tôi nghĩ rằng bạn có nghĩa là một cái gì đó như thế này:

$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

tuyệt vời. cảm ơn – DevDonkey

+0

bro tuyệt vời! bạn đá! –

Các vấn đề liên quan