2009-11-23 6 views
6

का समर्थन करता है मैं एक PHP क्लास की तलाश में हूं जो एक आईसीलेंडर (आईसीएस) फ़ाइल को पार्स कर सकता है और सही समय-समय पर संभाल सकता है।PHP में आईसीएंडेंडर पार्सर जो टाइमज़ोन

मैंने पहले से ही एक आईसीएस पार्सर बनाया है, लेकिन यह केवल PHP (जैसे 'यूरोप/पेरिस') के लिए ज्ञात टाइमज़ोन को संभाल सकता है।

दुर्भाग्यवश, इवोल्यूशन (उबंटू का डिफ़ॉल्ट कैलेंडर सॉफ़्टवेयर) द्वारा उत्पन्न आईसीएस फ़ाइल डिफ़ॉल्ट टाइमज़ोन आईडी का उपयोग नहीं करती है। यह घटनाओं को एक विशिष्ट टाइमज़ोन आईडी निर्यात करता है जो टाइमज़ोन की पूर्ण परिभाषा को भी निर्यात करता है: डेलाइट सेविंग तिथियां, पुनरावृत्ति नियम और टाइमज़ोन के बारे में समझने के लिए सभी कठिन चीजें।

यह मेरे लिए बहुत अधिक है। चूंकि यह मेरी प्रेमिका के लिए केवल एक छोटी सी उपयोगिता थी, इसलिए मेरे पास आईसीएंडेंडर विनिर्देश की जांच करने और एक पूर्ण उड़ा आईसीलेंडर पार्सर बनाने की समय नहीं होगी।

तो क्या आईसीएंडेंडर फ़ाइल प्रारूप के PHP में कोई ज्ञात कार्यान्वयन है जो टाइमज़ोन परिभाषाओं को पार्स कर सकता है?

+2

मैं 'सेबर \ vObject' अब उपयोग कर रहा हूँ। – mirabilos

+0

[आईसीएस पार्सर] (https://github.com/u01jmg3/ics-parser) – u01jmg3

उत्तर

10

अधिक संभावना है कि कई पुस्तकालय हैं जो .seics फ़ाइलों को पार्स करते हैं, लेकिन मैं आपको एक उदाहरण दिखाऊंगा जो मेरे लिए काफी अच्छा काम करता है।

मैं इस पुस्तकालय का उपयोग किया है: http://www.phpclasses.org/browse/file/16660.html

यह आप iCal घटकों के विभिन्न प्रकार से निपटने में बहुत लचीलापन देता है: VEVENT, VTODO, VJOURNAL, VFREEBUSY, VALARM, और VTIMEZONE (एक आप के बारे में पूछ रहे थे)।

उदाहरण:

<pre><?php 

// 
// Open library 
// 
require_once("iCalcreator.class.php") ; 

// 
// Demo ICal file contents 
// 
$string = <<<EOS 
BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
BEGIN:VTIMEZONE 
TZID:US-Eastern 
LAST-MODIFIED:19870101T000000Z 
BEGIN:STANDARD 
DTSTART:19971026T020000 
RDATE:19971026T020000 
TZOFFSETFROM:-0400 
TZOFFSETTO:-0500 
TZNAME:EST 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:19971026T020000 
RDATE:19970406T020000 
TZOFFSETFROM:-0500 
TZOFFSETTO:-0400 
TZNAME:EDT 
END:DAYLIGHT 
END:VTIMEZONE 
END:VCALENDAR 
EOS 
; 

// 
// There is no direct string parsing functionality, 
// so first create a temporary file 
// 
$filename = tempnam(".", "") ; 
$f = fopen($filename,"w") ; 
fwrite($f, $string); 
fclose($f); 

// 
// ... parse it into an object 
// 
$var = new vcalendar(); 
$var->parse($filename); 
var_dump($var); 
$event = $var->components[0] ; 
var_dump($event->createDtstamp()); 


// 
// ... and finally remove all temporary data. 
// 
unlink($filename); 
+0

धन्यवाद, मैं इसे देखूंगा :) –

+0

बस मुझे क्या लगता है, चीयर्स – wired00

+0

phpclasses.org आपको पंजीकरण करने की आवश्यकता है डाउनलोड तक पहुंचने में सक्षम हो। मैंने एक [सार्वजनिक रूप से सुलभ दर्पण] बनाया है (https://github.com/mirabilos/iCalCreator) इस के लाइसेंस के तहत मेरे अधिकारों का उपयोग ... पागल स्पेगेटी कोड। – mirabilos