2017-11-18 5 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式を使用することができます

関連する問題