2017-11-18 2 views
0

RSS 피드에서 img src를 가져오고 싶습니다만, 내부에만 이미지가 필요합니다 <div class="img" 다른 class="favicon" img src가 필요합니다. 그러나 이미지를 얻을 때 그것은 원래 이미지가 아니지만 파비콘을 반환합니다. 어떻게 해결할 수 있습니까? 다음은 피드 링크 "http://rss.disp.cc/PttHot.xml"입니다. 그리고 여기 내 코드입니다 : 나는이 내용에서 이미지를 얻기 위해 노력하고이미지 가져 오기 <src> rss 피드

<?php 
    $ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml'); 
    foreach ($ptt->entry as $entry) { 
    $content = $entry -> content; 
    preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $content, $images); 
    if(!empty($images)){$img = $images[1];}else{$img="";}?> 

여기에 내용 내부 img src 여러하지만 난 단지 <div class="image">img style="max-width:100%;" 다른되지 여분의 파비콘 내부에 원본 이미지가 필요합니다. 제발 도와주세요 - 여러 솔루션을 시도했지만 수정할 수 없습니다.

답변

0

어쩌면 DOMDocument을 사용하는 정규식 대신 xpath 표현식을 사용할 수 있습니다.

$entry->content에는 html이 포함되어 있으므로 loadHTML으로로드 할 수 있습니다. 예를 들어

//div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]

:

$ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml'); 
$doc = new DOMDocument(); 
foreach ($ptt->entry as $entry) { 
    $internalErrors = libxml_use_internal_errors(true); 
    $doc->loadHTML((string)$entry->content); 
    libxml_use_internal_errors($internalErrors); 
    $xpath = new DOMXpath($doc); 
    $items = $xpath->query("//div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]"); 
    foreach ($items as $item) { 
     $img = $item->getAttribute('src'); 
     echo $img . "<br>"; 
    } 
} 

그럼 당신은 img 태그를 얻기 위해 XPath 식을 사용할 수 있습니다

관련 문제