2011-07-18 44 views
6

Tôi đang cố gắng tạo tập lệnh PHP để tạo sự kiện lịch trong iCal. Tôi đã tìm kiếm ở đây và trong Google và chỉ đưa ra các kết quả nói về việc nhập các sự kiện iCal vào lịch do PHP tạo. Điều này trái ngược với những gì tôi cần.Tạo sự kiện lịch iCal với PHP

Tôi không có mã nào để đưa vào vì tôi không có điểm xuất phát. Bất cứ đề nghị về nơi tôi nên bắt đầu?

+0

Bạn có nghĩa là iCal, ứng dụng lịch của Apple, hoặc iCalendar, định dạng tập tin? (Mặc dù để giải quyết các cựu sẽ có thể liên quan đến sau này, anyway ...) –

+0

Cảm ơn bạn cho câu hỏi làm rõ. Tôi cần tạo một sự kiện iCal (Lịch Apple). – Shattuck

+0

Tìm thấy thư viện này trên github: https://github.com/markuspoerschke/iCal –

Trả lời

3

Một vài năm trước, tôi đã bắt đầu viết một thư viện iCalendar. Đó là giai đoạn khá alpha (và tôi đã thực sự từ bỏ nó), lúc đó không có PHP 5, và không có nhiều chức năng trong đó, nhưng:

  • Tôi có nhiều mã mà đi vào mô hình hóa các RFC iCalendar (bạn có thể muốn nhìn vào nó)
  • nó không có khả năng để lập trình tạo ra các sự kiện và nhổ ra định dạng iCal

Hy vọng nó giúp:

+0

Điều đó sẽ hữu ích khi xem xét. Cảm ơn bạn đã phản hồi. – Shattuck

+0

Bắt đầu này là những gì tôi đang tìm kiếm. Cảm ơn bạn – Shattuck

2

Bắt đầu tại đây. Điều này sẽ cung cấp cho bạn định dạng tệp cho sự kiện icalendar. sau đó bạn có thể sử dụng php để ra một tập tin như thế này với dữ liệu tùy chỉnh của bạn:

http://en.wikipedia.org/wiki/ICalendar

Tôi đã sử dụng điều này như một điểm tham chiếu cho các dự án trong quá khứ.

+0

Cảm ơn bạn đã bắt đầu. Điều này sẽ giúp rất nhiều. – Shattuck

2

Hãy thử điều này (từ https://gist.github.com/jakebellacera/635416)

<? 
// 1. Set the correct headers for this file 
header('Content-type: text/calendar; charset=utf-8'); 
header('Content-Disposition: attachment; filename=' . $filename); 

// 2. Define helper functions 

// Converts a unix timestamp to an ics-friendly format 
// NOTE: "Z" means that this timestamp is a UTC timestamp. If you need 
// to set a locale, remove the "\Z" and modify DTEND, DTSTAMP and DTSTART 
// with TZID properties (see RFC 5545 section 3.3.5 for info) 
// 
// Also note that we are using "H" instead of "g" because iCalendar's Time format 
// requires 24-hour time (see RFC 5545 section 3.3.12 for info). 
function dateToCal($timestamp) { 
    return date('Ymd\THis\Z', $timestamp); 
} 

// Escapes a string of characters 
function escapeString($string) { 
    return preg_replace('/([\,;])/','\\\$1', $string); 
} 

// 3. Echo out the ics file's contents 
?> 
BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
CALSCALE:GREGORIAN 
BEGIN:VEVENT 
DTEND:<?= dateToCal($dateend) ?> 
UID:<?= uniqid() ?> 
DTSTAMP:<?= dateToCal(time()) ?> 
LOCATION:<?= escapeString($address) ?> 
DESCRIPTION:<?= escapeString($description) ?> 
URL;VALUE=URI:<?= escapeString($uri) ?> 
SUMMARY:<?= escapeString($summary) ?> 
DTSTART:<?= dateToCal($datestart) ?> 
END:VEVENT 
END:VCALENDAR 
+0

cách bạn điền vào trường DESCRIPTION không phải là RFC phù hợp và không hoạt động. – datayeah

Các vấn đề liên quan