2015-10-05 96 views
2

我對PHP有點新鮮。PHP在Google日曆中生成日曆 - 無效網址

我想過濾包含特定字符串的事件的ICS文件。下面的腳本似乎做這項工作就好了:

<?php 
header('Content-type: text/calendar; charset=utf-8'); 
header('Content-Disposition: attachment; filename=fodda2009.ics'); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

function icsFilter($paramUrl,$filterstring) { 
    $icsFile = file_get_contents($paramUrl); 

    $icsData = explode("BEGIN:", $icsFile); 

    foreach($icsData as $value) { 
     if (strpos($value, "VEVENT") === FALSE) { 
      echo "BEGIN:"; 
      echo $value; 
     } 
     else { 
      if (strpos($value, $filterstring) !== FALSE) { 
       echo "BEGIN:"; 
       echo $value; 
      } 
     } 
    } 
} 

?> 
<?php echo icsFilter('http://cal.laget.se/ALMTUNAISHOCKEYSKOLA.ics','dda 2009'); ?> 
VEVENT 
DESCRIPTION:Dummy info 
DTEND;TZID=W. Europe Standard Time:20001010T121500 
DTSTAMP:20001005T192952Z 
DTSTART;TZID=W. Europe Standard Time:20001010T110000 
SUMMARY:Dummy event 
UID:[email protected] 
END:VEVENT 
END:VCALENDAR 

我主持腳本在http://mydomain.dyndns.com/mycalendar.php。當我在Google日曆中輸入該網址時(其他日曆 - >按URL添加),我會收到一條消息「[您的網址]不是有效的網址」。

這是由腳本以.php結尾引起的嗎?

我是否需要說服我的服務器(Apache)在http://mydomain.dyndns.com/mycalendar.ics URL調用php腳本?怎麼樣?還有什麼我做錯了嗎?

+1

在URL中的文件擴展名是沒有意義的。 「Content-type」頭是最重要的。你可以將'kittens.jpg'重命名爲'kittens.exe',告訴你的網絡服務器'.exe'文件是image/jpeg,你的瀏覽器會很高興地顯示圖片。 –

回答

0

OK,這是一個有點尷尬...

上面的代碼工作得很好,我的錯誤的根源是,我離開了「HTTP://」從URL。因此Google日曆抱怨說這不是一個好的網址。 咳嗽添加「http://」到我的網址創造奇蹟:)

我會離開腳本在這裏,也許別人想要一個簡單的PHP腳本過濾現有的iCal文件並將其提供給Google日曆。