2012-02-17 3 views
1

나는 줌라의 기사에서 첫 번째 이미지를 추출하고이 코드를 가지고 : 추출 줌라 기사의 모든 이미지

<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?> 
<?php echo $match[0]; ?> 

기사 및뿐만 아니라에서 사용할 수있는 모든 이미지를 추출하는 방법이 있나요 하나?

답변

2

정규식을 사용하여 HTML을 구문 분석하지 않는 것이 좋습니다. libxml을 사용하는 appropiate parser (예 : DOMDocument::loadHTML)을 사용해야합니다.

그런 다음 원하는 태그를 쿼리 할 수 ​​있습니다. 이런 식으로 뭔가 (안된) 작동하지 않을 수 있습니다 :

$doc = new DOMDocument; 
$doc->loadHTML($htmlSource); 

$xpath = new DOMXPath($doc); 
$query = '//img'; 
$entries = $xpath->query($query); 
foreach ($entries as $entry) { 
    // $entry->getAttribute('src') 
} 
+0

에서 지워지지 않습니다. 속성에 대한 액세스 권한이 있고 xpath가 작업을 수행하게하므로이 접근법을 좋아합니다. 당신도 먼저 대답 했으니 까. 고맙습니다 – themis

+0

내가 다시 사용했다고 언급합니다. 나쁜 나는 다시는 좋아하지 않는다 : P – themis

1

preg_match_all을 사용하십시오. 그리고 패턴을 수정하여 img 태그 내에서 후행 '/'를 고려해야합니다.

$str = '<img src="asdf" />stuff more stuff <img src="qwerty" />'; 
preg_match_all('/<img (.*?)\/>/', $str, $matches); 
print_r($matches); 

Array 
(
    [0] => Array 
     (
      [0] => <img src="asdf" /> 
      [1] => <img src="qwerty" /> 
     ) 

    [1] => Array 
     (
      [0] => src="asdf" 
      [1] => src="qwerty" 
     ) 

) 
+0

이 작동합니다, 나는 미래의 사용을 위해 정규 표현식을 저장했습니다. 감사합니다. – themis

+1

@ Alexander의 접근 방식이 HTML 구문 분석에 더 좋습니다. –

+0

hehe와 나는 이것을 사용하기 위해 되돌아왔다. 잘 작동하지만 이미지에 속성이 있으면 ID가 배열 [1] [0] – themis