【问题标题】:str_replace in .ics file not working.ics 文件中的 str_replace 不起作用
【发布时间】:2018-04-19 07:07:41
【问题描述】:

我尝试了几种不同的方法,但似乎都无法正常工作。在我的网站上,我有一个可以创建约会的区域(截图如下)。约会描述正确发布到数据库。创建约会后,将通过电子邮件将 .ics 文件发送给为约会设置的任何人。 .ics 文件包含所有行,但换行符不会进入 Outlook 约会,因此它只显示第一行。我已经尝试使用 str_replace ,如下所示,但它似乎不起作用。

编辑:我将 \n 放入了 .ics 文件,但 Outlook 除了第一行之外仍然没有显示任何内容。

添加约会模式的屏幕截图

.ics 文件中的 Outlook 约会屏幕截图

记事本中 .ics 文本的屏幕截图

用于创建 .ics 文件的相关 .php 代码

$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;

【问题讨论】:

  • 我编辑了原帖。我得到了 \n 进入 .ics 文件,但它仍然没有加载到 Outlook 中
  • 您在记事本中的屏幕截图没有在该位置显示任何\n 字符组合。
  • 不是来自原始帖子,但如果您查看我的“编辑”下方的屏幕截图,您可以在该行中看到\n。仍然无法在 Outlook 应用程序的描述中工作
  • 将描述内容包装在 " 中会改变什么吗?您能否从 Outlook 中导出这样的事件并检查它在这种情况下创建的确切格式?

标签: php icalendar


【解决方案1】:

根据 iCalendar 规范,您需要在每行之后回车和换行,即“\r\n”。您还缺少 UID 项,这是必需的,您需要换行超过 75 个字符。

您可能需要考虑使用一个 PHP 库来为您完成所有这些工作。您还应该使用像 icalendar.org 这样的验证器检查生成的 iCalendar 文件,以确保它是有效文件,这会增加文件被成功导入的可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    相关资源
    最近更新 更多