使用SimplePie创建个性化事件列表
任何博客或网站(特别是新闻网站)的一个不错的功能是列出一些即将引起读者注意的事件。整理此信息的一种方法是搜索网络并手动更新列表。然而,这是耗时且乏味的,特别是因为有更简单的方法可以做到这一点。
看看Yahoo网站Upcoming。在此站点上,您可以搜索世界各地不同位置的许多不同主题的事件。另外,如果您有活动,可以将其放在网站上。
由于可以通过RSS访问所有搜索,因此可以使用SimplePie将这些结果整理在一起。以下脚本将采用两个数组,其中一个是位置,另一个是主题。然后,它将创建必要的RSSURL,并使用SimplePie的多馈源聚合器功能将所有不同事件整理到单个数组中。在数组中运行脚本并删除重复的脚本并按日期对数据进行排序之后,所有脚本需要做的事情。
set_feed_url($feeds); //按日期关闭Feed排序 $feed->enable_order_by_date(false); //获取提要内容 $feed->init(); //初始化之前完成的FeedID数组 $prevIds = array(); //初始化项目数组 $list = array(); //对于每个提要项 foreach ( $feed->get_items() as $item ) { //检查我们之前是否尚未完成此项目 if ( !in_array($item->get_id(true), $prevIds) ) { //提取并转换xCal:dtstart变量 $when = $item->get_item_tags('urn:ietf:params:xml:ns:xcal', 'dtstart'); $date = $when[0]['data']; $sortDate = SimplePie_Misc::parse_date($date); $gCalDate = date('j M Y', $sortDate); //检查日期是否已经在列表中 if ( isset($list[$sortDate]) ) { //尝试10次尝试增加排序日期时间戳和插入日期 for ( $i=0 ; $i < 10 ; ++$i ) { ++$sortDate; if ( !isset($list[$sortDate]) ) { $list[$sortDate] = '
- ';
echo implode(' ',$list);
echo '
我没有依次解释每个步骤,而是添加了注释来解释正在发生的事情。另外,在此示例中,我搜索了英格兰和欧洲涉及php,网站开发,代码和javascript的事件。但是,似乎PHP不是一个很好的关键字,因为任何包含扩展名为.php的链接的事件都会附带PHP。我确定这种情况与HTML之类的情况类似,因此最好暂时避免使用这些关键字。