0

我有一个小问题,希望有人能帮我解决。

下面复制的是一段代码,它转到我的数据库模型并返回一个带有 URL 和提要类型的数组。用户输入他们是否使用过 Twitter 名称、博客网站等。

但是,要使用 simplepie 解析这些数据,我需要传递一个 URL 数组......并且我失去了我的“类型”选项。无论如何我可以将它添加回 simplepie 项目,以便如果用户选择了特定类型的提要,我可以显示特定图标。

$feed = $this->profile_model->get_module_feed();

    $feedarr = array();
    foreach($feed['data'] as $feeds) {
        if ($feeds['type'] == 1 ) {
            $i = "http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=" . $feeds['rss'];
        }
        if ($feeds['type'] == 2 ) {
            $i = "http://search.twitter.com/search.atom?q=" . $feeds['rss'];
        }
        if ($feeds['type'] >= 3 ) {
            $i = $feeds['rss'];
        }

        $d = $feeds['type'];

        //else $i = $feeds['rss'];

        echo $i . " " . $d . "<br />";

        array_push($feedarr, $i);
    }

    $this->simplepie->set_feed_url($feedarr);
    $this->simplepie->enable_cache(false);
    $this->simplepie->init();
    $this->simplepie->handle_content_type();


    $data = $this->simplepie;

    foreach($data->get_items() as $item) { ?>
        <h2><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h2>
        <p><?php echo $item->get_description(); ?></p>
        <p><small>Posted on <?php echo $item->get_date('j F Y | g:i a'); ?></small></p>
    <?php


    }


    }
}


?>

例如,如果 $feed['type'] 是 1 我想显示与 1 关联的图像

希望有人可以提供帮助,因为我有点难过!

4

1 回答 1

0

您可以使用单个提要项的feed属性来获取它的订阅 url,并尝试将其与您用于获取的提要 url 匹配。这是一个简化的示例:

// array with unique feed url => feed type (icon)
$feed_types = array(
    'http://feed.one.com/' => 'type1',
    'http://feed.two.com/' => 'type2',
);

$pie = new SimplePie;
$pie->set_feed_url(array_keys($feed_types));
$pie->enable_cache(false);
$pie->init();
$pie->handle_content_type();

foreach ($pie->get_items() as $item) {
    $feed_url = $item->feed->subscribe_url();
    $type = isset($feed_types[$feed_url]) ? $feed_types[$feed_url] : 'unknown type';
    print $type;
}

只要您使用相同的 url 来获取嵌入到提要结果中的内容,该subscribe_ul()方法的结果应该与set_feed_url().

于 2012-08-01T20:05:38.377 回答