isc.php库在PHP的foreach

问题描述:

我使用ics.php它工作正常,但有一个事件,但我怎么能从数据库添加多个事件?我怎样才能循环这样的:isc.php库在PHP的foreach

$ics = new ICS(array(
'id' => $event->id, 
'location' => 'Mājās', 
'description' => $event->description, 
'dtstart' => $event->startdate, 
'dtend' => $event->startdate, 
'summary' => $event->title, 
'url' => '', 
'alarm' => '' 
)); 
echo $ics->to_string(); 

但没有循环的所有类,但只有事件:

'id' => $event->id, 
'location' => 'Mājās', 
'description' => $event->description, 
'dtstart' => $event->startdate, 
'dtend' => $event->startdate, 
'summary' => $event->title, 
'url' => '', 
'alarm' => '' 

ics.php只支持一个单一的事件。如果你想创建一个有多个事件的ICS战队,你可能需要自己构建文件。

幸运的是,文件格式非常简单,所以构建你自己的应该不会太难。

开始的地方是从ics.php得到的输出,然后尝试自己重新创建它。一个ICS文件可以有多个事件块,所以只需重复该块几次,然后设置。

BEGIN:VCALENDAR 
... 
BEGIN:VEVENT 
... 
END:VEVENT 
BEGIN:VEVENT 
... 
END:VEVENT 
END:VCALENDAR 
+0

在线验证器表示:邻近行#14 近线#缺少DTSTAMP属性5 参考:RFC邻近行#1 – aidron

答到第二个问题

您在代码中有一些错误。

首先:您正在使用单引号结合\r\n\r\n仅在使用双引号时进行评估。

第二种:您正试图在字符串声明中将\r\n与字面换行符结合使用。这将产生空线在你的目标文件

$cal = "BEGIN:VCALENDAR\r\n VERSION:2.0\r\n";而不是$cal = "BEGIN:VCALENDAR\r\nVERSION:2.0\r\n";

这将分别导致

BEGIN:VCALENDAR 

VERSION:2.0 

BEGIN:VCALENDAR 
VERSION:2.0 

更新代码:

$events = ORM::for_table('events')->find_many(); 

$cal = "BEGIN:VCALENDAR\r\n"; 
$cal .= "VERSION:2.0\r\n"; 
$cal .= "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\r\n"; 
$cal .= "CALSCALE:GREGORIAN\r\n"; 

foreach($events as $event){ 
    $cal .= "BEGIN:VEVENT\r\n"; 
    $cal .= "STATUS:CONFIRMED\r\n"; 
    $cal .= "UID:" . $event->id . "\r\n"; 
    $cal .= "LOCATION:\r\n"; 
    $cal .= "DESCRIPTION:" . $event->description . "\r\n"; 
    $cal .= "SUMMARY:" . $event->title . "\r\n"; 
    $cal .= "DTSTART:" . $event->startdate . "\r\n"; 
    $cal .= "DTEND:" . $event->startdate . "\r\n"; 
    $cal .= "LAST-MODIFIED:\r\n"; 
    $cal .= "END:VEVENT\r\n"; 
} 
$cal .= "END:VCALENDAR\r\n"; 

echo $cal; 

更新:

更改'$ cal。=“END:VEVENT”;“到'$ cal。=“结束:VEVENT \ r \ n”;'

+0

不匹配的 'BEGIN' 和 'END'(:VEVENT,END::VEVENTBEGIN VEVENT BEGIN)缺少VCALENDAR对象5545 3.6.1。事件组件 无效的DTSTART值,必须是日期或日期时间值,靠近第5行 参考:3.3.5。日期时间 无效的DTEND值,必须是日期或日期时间值,靠近第5行 参考:3.3.5。约会时间 – aidron