2011-01-24 32 views
0

我一直在这里停留了一段时间。我试图建立一个函数,它可以根据当天的情况检索日程安排信息(RSS源具有未来10天的高级版本)PHP RSS基于时间表

问题是通过RSS提要筛选以删除我不提供的数据想 - 2011年如1月24日:第7天的需求是7

所以,当我使用

<?php echo schedule('01/24/2011'); ?> 

它调用此:

//Finds the day by stripping data from the myDragonnet RSS feed. 
function schedule($given_date) { 
    $url = "http://mydragonnet.hkis.edu.hk/schedule/day_schedule_rss.php?schedule_id=1"; 
    $rss = simplexml_load_file($url); 
    $date = date("~jS M Y~", strtotime($given_date)); 
    if($rss) { 
     foreach($rss->channel->item as $item) { 
      foreach ($item->title as $story) { 
       if (strpos($date, $story) !== false) { 
        preg_match("/Day (\d+)/", $story, $m); 
        break; // stop searching 
       } 
      } 
     } 
    } 
    return $m[1]; 
} 

但问题是我连续ly越来越 - Notice: Undefined variable: m in ***/class.schedule.php on line 38

+0

看着你正在拉动的RSS源,这个正则表达式不会总是有效,因为日期名称并非总是数字(“日期C2”)。 – 2011-01-24 04:08:10

+0

我以前曾使用它 - 如果设置了非数字日期,它将在代码中稍后默认为特殊的日程安排。同样在周末没有一天的情况下,这里将使用这个:\t \t if(empty($ m)){ \t $ m [1] = 0; } – 2011-01-24 04:11:27

回答

3

您正在复制和粘贴您的其他问题的答案而不理解。

您的preg_match行会填充$m(如果匹配)无法到达,因为您正在将正则表达式模式传递到strpos,并且它总是返回false。

模式周围的~分隔符不会作为文字字符出现在RSS提要中,因此strpos永远不会找到它们。