Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php str_replace in.ics文件不工作_Php_Icalendar - Fatal编程技术网

Php str_replace in.ics文件不工作

Php str_replace in.ics文件不工作,php,icalendar,Php,Icalendar,我试过几种不同的方法,但似乎都不管用。在我的网站上,我有一个区域可以创建约会(下面的屏幕截图)。约会描述将正确发布到数据库。创建约会后,将通过电子邮件将.ics文件发送给为其设置约会的人。.ics文件包含所有行,但换行符不会进入Outlook约会,因此它只显示第一行。我试过使用stru替换,如下所示,但它似乎不起作用 编辑:我得到了进入.ics文件的\n文件,但是Outlook除了第一行之外仍然没有显示任何内容 添加约会模式的屏幕截图 来自.ics文件的Outlook约会屏幕截图 记事本中

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

编辑:我得到了进入.ics文件的\n文件,但是Outlook除了第一行之外仍然没有显示任何内容

添加约会模式的屏幕截图

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

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

用于创建.ics文件的相关.php代码
根据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;