icalendar

C-H

Erfahrenes Mitglied
Hi!

Für einen Veranstaltungskalender möchte ich die Möglichkeit bieten die Termine als iCal-Datei runterzuladen und in das eigene Kalenderprogramm zu importieren. Auf wikipedia habe ich mir die Beschreibung angesehen und entsprechend sieht meine Ausgabe aus:

Code:
BEGIN:VCALENDER
VERSION:2.0
PRODID:-//COMPANY//PROGRAM//EN
BEGIN:VEVENT
DTSTART:20080820T000000Z
DTEND:20080820T235959Z
DESCRIPTION:Ein kurzer Text, der nicht abgeschnitten werden soll.
LOCATION:
SUMMARY:Test 1
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDER

Outlook meckert, dass die Datei keine gültige Kalenderdatei ist. Was ist daran falsch?

Der Link zum wikipedia Artikel: http://en.wikipedia.org/wiki/ICalendar
 
Wer lesen kann ... Danke für die Hinweise

Dennoch funktioniert es immer noch nicht. Trotz Angaben des encodings im Header scheint die Datei immer noch ANSI-codiert zu sein (Wenn ich sie in Notepad++ öffne, zeigt mir das Menü "Format" an, dass die Datei ANSI-copdiert ist).

Hier der Code:

PHP:
<?php
 include("../../../inc/config/config.php");
 include("../../../inc/allgemein/mysql_db.php");
 include("../../../inc/allgemein/special.php");
 
    header("Content-Type: text/plain; charset=utf-8");
    header("Content-Disposition: inline; filename=iCalender.ics");
 
 header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
 header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate");
 header("Cache-Control: post-check=0, pre-check=0", false);
 header("Pragma: no-cache");
 
 $lf = "\r\n";
 $res_text = "";
 
 $res_text.= "BEGIN:VCALENDER
VERSION:2.0
PRODID:-//Company//Product//EN
BEGIN:VEVENT".$lf;
 
 $masInfo = mySelect("SELECT *, DATE_FORMAT(terminamvom,'%Y%m%d') AS aliasterminamvom, DATE_FORMAT(terminbis,'%Y%m%d') AS aliasterminbis FROM ".PREFIX."termin WHERE ID=".$ID);
 
 $res_text.= "DTSTART:".$masInfo[0]["aliasterminamvom"]."T000000Z".$lf;
 $res_text.= "DTEND:".$masInfo[0]["aliasterminbis"]."T235959Z".$lf;
 $res_text.= "DESCRIPTION:".$masInfo[0]["beschreibung"].$lf;
 if(!empty($masInfo[0]["url"]))
  $res_text.= "\n\n".$masInfo[0]["url"].$lf;
 elseif(!empty($masInfo[$j]["rubrik"]))
  $res_text.= DOCUMENT_ROOT."/tools/internet/view.php?rID=".$masInfo[0]["rubrik"]."&TabellenName=katalog".$SpracheChange."&SpracheChange=".$SpracheChange.$lf;
 $res_text.= "LOCATION:".$lf;
 $res_text.= "SUMMARY:".$masInfo[0]["name"].$lf;
 $res_text.= "TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDER".$lf;
//$res_text = iconv("ISO-8859-1","UTF-8",$res_text);
echo $res_text;
?>

Die 2. Frage ist: wie kann ich die Länge einer Zeile in oktets ermitteln?
 
Dat is scho kla! Deshalb auch
PHP:
iconv("ISO-8859-1","UTF-8",$res_text);
(Auch wenn's im Beispielcode jetzt auskommentiert ist.).

Allerdings schlägt das scheinbar nicht durch. Und es geht mir auch _nur_ um die Ausgabe, nicht um die Verarbeitung, deshalb ist mir dein Ansatz etwas "overdone".

Ich habe es jetzt noch mal die Funktion utf8_encode() versucht, die la laut php.net einen String in utf-8 umwandeln soll (wie ja eigentlich auch iconv()).

Vielleicht stehe ich auch irgendwie auf'm Schlauch - schubst mich dann doch bitte mal einer runter ;-)
 

Neue Beiträge

Zurück