1

RSS フィードを取得していますが、タグ内に特定の画像 URL を含むアイテムのみを表示したいと考えています。ここに私が探したい特定のビットがあります:

<media:thumbnail url="http://media.publicbroadcasting.net/wfpl/events/images/ourPick5.gif"/>

そして、これが私がこのアプリケーションで使用している特定のコードです。これは基本的なものであり、Simplepie や PHP はあまり得意ではありません (PHP についてよりしっかりとした知識を持っている人には、これを行うためのよりエレガントな方法があると思います)。

<?php include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('http://www.publicbroadcasting.net/wfpl/.eventsfeed');
if (!is_wp_error( $rss ) ) :  
$maxitems = $rss->get_item_quantity(5); 
$rss_items = $rss->get_items(0, $maxitems); 
endif; ?>

<ul id="events">
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    foreach ( $rss_items as $item ) :  ?>

    <li>
        <div><?php echo $item->get_title(); ?></div>
        <div><?php echo $item->get_description(); ?></div>
    </li>
    <?php endforeach; ?>
</ul>

繰り返しますが、「media:thumbnail」タグにその特定の画像 URL を持つアイテムのみを表示し、他のすべてのアイテムを破棄します。また、画像自体を表示する必要はありません。どのアイテムを除外するかを決定する方法として、その存在を使用したいだけです。

4

1 に答える 1

1

指定したタグ内の特定の URL が解析記述に含まれていることを確認する場合は、preg_match() を使用します。特定のケースでは、パーツを次のように変更しecho $item->get_description();ます

$strDesc = $item->get_description();
if (preg_match('/<media:thumbnail\surl\="http:\/\/media.publicbroadcasting.net\/wfpl\/events\/images\/ourPick5.gif".+?>/i', $strDesc))
    echo $strDesc;

[編集]

<media>タグにタグがないことに気づきました<description>。その場合、これは機能するはずです。

<?php 
include_once './inc/autoloader.php'; 
$feed = new SimplePie();
$feed->set_feed_url('http://www.publicbroadcasting.net/wfpl/.eventsfeed');
$feed->enable_cache(false);
$feed->init();
$feed->handle_content_type();


foreach ($feed->get_items() as $item)
{
    if ($enclosure = $item->get_enclosure())
        if ($enclosure->get_thumbnail() != "http://media.publicbroadcasting.net/wfpl/events/images/ourPick5.gif")
            continue;
    ?>
    <ul>
        <li>
            <div><?php echo $item->get_title(); ?></div>
            <div><?php echo $item->get_description(); ?></div>
        </li>
    </ul>
    <?
}
?>
于 2012-08-30T06:36:27.620 に答える