Stefan Gehrig의 답변과 Dave None의 답변 (및 mmmshuddup의 답변) 외에 개인적인 경험에 대한 메모 :
http://severinghaus.org/projects/icv/ 에서 ICS 유효성 검사기를 사용할 때 \ n과 PHP_EOL을 모두 사용하여 유효성 검사 문제가 발생했습니다 .
제대로 유효성을 검사하기 위해 \ r \ n을 사용해야한다는 것을 배웠으므로 이것이 내 솔루션이었습니다.
function dateToCal($timestamp) {
return date('Ymd\Tgis\Z', $timestamp);
}
function escapeString($string) {
return preg_replace('/([\,;])/','\\\$1', $string);
}
$eol = "\r\n";
$load = "BEGIN:VCALENDAR" . $eol .
"VERSION:2.0" . $eol .
"PRODID:-//project/author//NONSGML v1.0//EN" . $eol .
"CALSCALE:GREGORIAN" . $eol .
"BEGIN:VEVENT" . $eol .
"DTEND:" . dateToCal($end) . $eol .
"UID:" . $id . $eol .
"DTSTAMP:" . dateToCal(time()) . $eol .
"DESCRIPTION:" . htmlspecialchars($title) . $eol .
"URL;VALUE=URI:" . htmlspecialchars($url) . $eol .
"SUMMARY:" . htmlspecialchars($description) . $eol .
"DTSTART:" . dateToCal($start) . $eol .
"END:VEVENT" . $eol .
"END:VCALENDAR";
$filename="Event-".$id;
// Set the headers
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $filename);
// Dump load
echo $load;
이로 인해 구문 분석 오류가 중지되고 ICS 파일이 제대로 검증되었습니다.