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