1

iCalendar ファイルを解析できるクラスを作成しようとしていますが、壁にぶつかっています。各行の形式は次のとおりです。

PARAMETER[;PARAM_PROPERTY..]:VALUE[,VALUE2..]

値にバッククォート付きのコンマが含まれている可能性があることがわかるまで、一連の分割または正規表現のいずれかを使用して解析するのは非常に簡単です。例えば:

PARAMETER:"my , cool, value",value\,2,value3

この例では、次の 3 つの値を引き出すことを意図しています。

  • 私の、クールな価値
  • 値,2
  • 値3

これにより、少し難しくなります。

提案?

4

4 に答える 4

3

ファイルを char ごとに調べ、値を手動で分割します。引用符があるときはいつでも、コンマで分割しない「引用モード」に入り、終了引用符が来たらそのままにしておきます。

バッククォートされたコンマについて: バックスラッシュを読み込むと、次の文字も読み込んで、それをどうするかを決定します。

もちろん、これは非常に効率的ではありませんが、これには正規表現を使用できません。できるということですが、引用符をエスケープすることもできると思うので、これは非常に面倒です。

ただし、試してみたい場合:

  • 引用符とそれに続く文字を一致させることから始めましょう:"[^"]*"
  • エスケープ文字の問題を克服するために、先読みを使用できます(?<!\\)"[^"]*(?<!\\)"
  • エスケープされた引用符が値に含まれていると壊れますが、これでうまくいくでしょうか?(テストしていません)(?<!\\)"[^"|(?<=\\)"]*(?<!\\)"

すぐにぐちゃぐちゃになってしまうので、キャラクターごとに読むことをお勧めします。

于 2009-12-25T10:13:13.557 に答える
1

私も同じ問題を抱えていました。「任意の」iCalendar ファイルを使用可能な PHP オブジェクト/配列構造に変換するのは少し難しいことがわかったので、代わりに iCalendar を xCal に変換しようとしました。

これは私の実装です:

http://code.google.com/p/sabredav/source/browse/branches/caldav/lib/Sabre/CalDAV/ICalendarToXML.php

I must say that this script is not fully tested, but it might be enough to get your started.

于 2009-12-28T09:57:15.300 に答える
0

これはあなたが考えているプロジェクトですか?私は作者です :) 最初の使用可能なバージョン (v0.1.0) は、約 1 か月で準備が整うはずです。現在、iCalendar 仕様の約 85% で動作できますが、定期的なイベントは非常に困難です。私は今それらに取り組んでいます。それらが完了すると、ライブラリは仕様で何でもできるようになります。

qCal Google コード ホームページ

楽しみ!

于 2010-01-23T18:09:42.377 に答える
0

http://phpicalendar.net/から何かを引き出してみましたか?

于 2009-12-25T10:38:36.363 に答える