2011-03-11 6 views

답변

6

DOMDocument class에 익숙해 져야합니다. 이를 수행하는 가장 좋은 방법은 DOMDocument을 사용하여 HTML을 구문 분석하고 getElementsByTagName('img')을 사용하여 모든 <img> 태그를 찾으십시오. 이미지의 src 속성이면 DOMDocument가 해당 속성을 반환하고 배열에 저장할 수 있습니다. 모든 이미지는 루트 문서의 직접 아이들이있는 경우

// HTML already parsed into $dom 
$imgs = $dom->getElementsByTagName('img'); 
$img_src = array(); 

// Array of nodes to remove. 
$to_remove = array(); 

foreach ($imgs as $img) { 
    // Store the img src 
    $img_src[] = $img->getAttribute('src'); 

    // Delete the node (I think this works) 
    $to_remove[] = $img; 
} 

// Then remove all the nodes slated for deletion: 
foreach ($to_remove as $node) { 
    $dom->removeChild($img); 
} 
+0

꽤 흥미로운 내용입니다. 장래의 독서를 위해 북마크했습니다. 내가 작업하고있는 HTML은 함수에 의해 리턴됩니다. – hamishtaplin

+0

@dr_tchock DOMDocument :: loadHTML()은 파일이 아닌 문자열에서 HTML을로드하며, 함수가 문자열을 반환하면 작동 할 수도 있습니다. http://www.php.net/manual/en/domdocument.loadhtml.php –

+0

루프 내에서 해당 배열을 반복하는 동안 배열에서 항목을 제거하지 마십시오. – lovesh

0
<?php 
$pattern = '/<img[^>]*src="([^"]*)[^>]*>/i'; 
preg_match_all($pattern, $data, $matches); 

// image src array 
$images = $matches[1]; 

// no images 
$html = preg_replace($pattern, '', $data); 
?> 
1

허용 대답에만 작동합니다. 중첩 된 문서의 경우 this answer을 사용하는 것이 좋습니다.

관련 문제