Php str_replace in.ics文件不工作
我试过几种不同的方法,但似乎都不管用。在我的网站上,我有一个区域可以创建约会(下面的屏幕截图)。约会描述将正确发布到数据库。创建约会后,将通过电子邮件将.ics文件发送给为其设置约会的人。.ics文件包含所有行,但换行符不会进入Outlook约会,因此它只显示第一行。我试过使用stru替换,如下所示,但它似乎不起作用 编辑:我得到了进入.ics文件的\n文件,但是Outlook除了第一行之外仍然没有显示任何内容 添加约会模式的屏幕截图 来自.ics文件的Outlook约会屏幕截图 记事本中.ics文本的屏幕截图 用于创建.ics文件的相关.php代码Php str_replace in.ics文件不工作,php,icalendar,Php,Icalendar,我试过几种不同的方法,但似乎都不管用。在我的网站上,我有一个区域可以创建约会(下面的屏幕截图)。约会描述将正确发布到数据库。创建约会后,将通过电子邮件将.ics文件发送给为其设置约会的人。.ics文件包含所有行,但换行符不会进入Outlook约会,因此它只显示第一行。我试过使用stru替换,如下所示,但它似乎不起作用 编辑:我得到了进入.ics文件的\n文件,但是Outlook除了第一行之外仍然没有显示任何内容 添加约会模式的屏幕截图 来自.ics文件的Outlook约会屏幕截图 记事本中
根据iCalendar规范,每行后面都需要回车和换行符,即“\r\n”。您还缺少必需的UID项,并且需要换行长度超过75个字符
你可能想考虑使用一个PHP库来完成所有这些任务。您还应该使用类似于的验证器检查生成的iCalendar文件,以确保它是有效的文件,这会增加文件成功导入的可能性。
可能与我编辑的原始帖子重复。我获得了进入.ics文件的\n权限,但它仍然没有加载到Outlook。记事本中的屏幕截图在该位置没有显示任何\n
字符组合。不是从原始帖子中获得的,但是如果您查看我的“编辑”下面的屏幕截图,您可以看到行中的\n
。在Outlook应用程序的描述中仍不起作用将描述内容包装在“更改任何内容”中。您能否从Outlook导出此类事件,并检查在这种情况下创建的确切格式?
$appNote = str_replace("\r\n", "\\n", $_POST['appNote']);
$appNote = htmlspecialchars($appNote, ENT_QUOTES);
$ical_content = "BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VTIMEZONE"
.$adtimezone."
END:VTIMEZONE
BEGIN:VEVENT
CREATED:".$createdDate."
DESCRIPTION:".$appNote."
DTEND;TZID=\"".$appTimeZone."\":".$endDateTime."
DTSTAMP:".$createdDate."
DTSTART;TZID=\"".$appTimeZone."\":".$startDateTime."
LAST-MODIFIED:".$createdDate."
LOCATION:".$appLocation."
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:".$appSubject." - ".$clientusername."
".$reminderinfo;
$ical_content = "BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VTIMEZONE"
.$adtimezone."
END:VTIMEZONE
BEGIN:VEVENT
CREATED:".$createdDate."
DESCRIPTION:".$appNote."
DTEND;TZID=\"".$appTimeZone."\":".$endDateTime."
DTSTAMP:".$createdDate."
DTSTART;TZID=\"".$appTimeZone."\":".$startDateTime."
LAST-MODIFIED:".$createdDate."
LOCATION:".$appLocation."
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:".$appSubject." - ".$clientusername."
".$reminderinfo;