Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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中解析iCalendar字符串的最佳方法_Php_Parsing_Icalendar - Fatal编程技术网

在php中解析iCalendar字符串的最佳方法

在php中解析iCalendar字符串的最佳方法,php,parsing,icalendar,Php,Parsing,Icalendar,我正在尝试编写一个可以解析iCalendar文件的类,并且遇到了一些困难。每行可以采用以下格式: PARAMETER[;PARAM_PROPERTY..]:VALUE[,VALUE2..] 使用一堆拆分或正则表达式进行解析非常容易,直到您发现值可以有倒勾逗号,也可以有双引号标记,这会让生活变得艰难。例如: PARAMETER:"my , cool, value",value\,2,value3 在本例中,您需要拉出三个值: 我的,酷的价值 值,2 价值3 这让它变得有点困难 建议?逐字符浏览

我正在尝试编写一个可以解析iCalendar文件的类,并且遇到了一些困难。每行可以采用以下格式:

PARAMETER[;PARAM_PROPERTY..]:VALUE[,VALUE2..]
使用一堆拆分或正则表达式进行解析非常容易,直到您发现值可以有倒勾逗号,也可以有双引号标记,这会让生活变得艰难。例如:

PARAMETER:"my , cool, value",value\,2,value3
在本例中,您需要拉出三个值:

我的,酷的价值 值,2 价值3 这让它变得有点困难


建议?

逐字符浏览文件并手动拆分值,只要有引号,就进入不以逗号拆分的引号模式,当结束引号出现时,就离开它

对于反勾逗号:如果读入反斜杠,则同时读入下一个字符并决定如何处理

当然,这不是非常有效,但不能使用正则表达式来实现。我的意思是你可以,但因为我相信也可以有转义引号,这将是非常混乱的

如果您想尝试一下:

让我们首先匹配一个引号,后跟不是:[^]的字符*
为了克服转义字符的问题,您可以使用lookaheads?逐个字符浏览文件并手动拆分值,每当有引号时,您就进入引号模式,在该模式下,您不会以逗号拆分,当结束引号出现时,您就离开它

对于反勾逗号:如果读入反斜杠,则同时读入下一个字符并决定如何处理

当然,这不是非常有效,但不能使用正则表达式来实现。我的意思是你可以,但因为我相信也可以有转义引号,这将是非常混乱的

如果您想尝试一下:

让我们首先匹配一个引号,后跟不是:[^]的字符*
为了克服转义字符的问题,您可以使用lookaheads?您是否尝试过从中提取一些内容?

您是否尝试过从中提取一些内容?

我也有同样的问题。我发现将“任意”iCalendar文件转换为可用的PHP对象/数组结构有点困难,所以我一直在尝试将iCalendar转换为xCal

这是我的实现:


我必须说这个脚本还没有完全测试过,但它可能足以让您开始使用。

我也遇到了同样的问题。我发现将“任意”iCalendar文件转换为可用的PHP对象/数组结构有点困难,所以我一直在尝试将iCalendar转换为xCal

这是我的实现:


我必须说,这个脚本还没有经过充分测试,但它可能足以让您开始工作。

这就是您正在考虑的项目吗?我是作者:第一个可用版本v0.1.0应该在大约一个月内准备好。目前,它能够处理约85%的iCalendar规范,但重复发生的事件确实很困难。我现在正在做。一旦这些都完成了,库将完全能够执行规范中的任何操作


享受吧

这就是你正在考虑的项目吗?我是作者:第一个可用版本v0.1.0应该在大约一个月内准备好。目前,它能够处理约85%的iCalendar规范,但重复发生的事件确实很困难。我现在正在做。一旦这些都完成了,库将完全能够执行规范中的任何操作


享受吧

不,我看了一下,但没看太远。不过,我确实设法使用了一个项目qcalendar的一些代码,我目前在谷歌上找不到这些代码,当我回到工作岗位时,这些代码会更新,看起来做得不错。不,我看了一下,但没有走得太远。不过,我确实设法使用了一个项目qcalendar中的一些代码,我目前在谷歌上找不到这些代码,当我回到工作岗位时,这些代码会更新,这似乎做得很好。我同意,这看起来好像正则表达式有点乱。当我回去工作的时候,我会给你一个机会,让你知道我现在是怎么做的。真希望我在uni做了编译器和解析器,而不是代码的正式证明。我同意,看起来正则表达式有点乱。当我回去工作的时候,我会给你一个机会,让你知道我现在是怎么做的。真希望我在uni用编译器和解析器,而不是代码有趣方法的正式证明,很遗憾像googlecalendar这样的地方不提供xcal提要。有趣的方法,像谷歌日历这样的地方不提供xcal提要,真是太遗憾了。