Php iCalendar dizesini ayrıştırmak için en iyi yol

4 Cevap php

Ben bir iCalendar dosyasını ayrıştırmak bir sınıf yazmak çalışıyorum ve bazı tuğla duvarlar isabet duyuyorum. Her satır biçiminde olabilir:

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

Eğer değerler aynı zamanda hayatı zorlaştırıyor işaretli çift tırnak olabilir, virgül backticked sahip olduğunu öğrenmek kadar böler veya regex yıllardan bir grup ile ya ayrıştırmak için oldukça kolaydır. örneğin:

PARAMETER:"my , cool, value",value\,2,değer3

Bu örnekte üç değerleri çekin içindir:

  • benim, serin değeri
  • değeri 2
  • değer3

Hangi biraz daha zorlaştırıyor.

Önerileriniz?

4 Cevap

Karakter tarafından dosya karakter üzerinden gidin ve size virgül bölmek değil ve sağ tırnak işareti geldiğinde bırakın siz "tırnak modu" enter tırnak işareti var her el değerleri paylaşırlar.

Backticked virgül için: Bir ters bölü okursanız siz de bir sonraki karakteri okumak ve sonra onunla ne yapacağınıza karar.

Tabii ki bu son derece verimli değil, ama bunun için normal ifadeler kullanamazsınız. Yapabileceğini demek, ama ben de tırnak işaretleri var kaçan olabilir inanıyorum çünkü bu gerçekten dağınık olacak.

: Eğer olsa bir denemek istiyorum

  • "[^"]*": Kullanıcının olmayan karakterler tarafından izlenen bir tırnak işareti eşleştirerek başlayalım
  • kaçan karakter sorunu aşmak için size lookaheads (?<!\\)"[^"]*(?<!\\)" kullanabilirsiniz
  • kaçan tırnak işaretleri değeri ise şimdi kıracak, belki bu işler? (henüz denemedim) (?<!\\)"[^"|(?<=\\)"]*(?<!\\)"

Yani çok hızlı olsun en dağınık görmek, bu yüzden ben characterwise onu okumak için size öneririm.

Ben aynı sorunları vardı. Ben biraz zor kullanılabilir bir PHP nesne / dizi yapısı içine 'herhangi' iCalendar dosyasını açmak bulundu, bu yüzden onun yerine ben Xcal iCalendar dönüştürmek için çalışıyorum.

Bu benim uygulamasıdır:

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

Ben bu script tam olarak test olmadığını söylemeliyim, ancak sizin başlamak için yeterli olabilir.

Eğer dışında bir şey çekerek denedim http://phpicalendar.net/?

Bu sizin düşündüğünüzü proje midir? Ben Auther değilim :) ilk kullanılabilir sürümü (v0.1.0) yaklaşık bir ay içinde hazır olmalıdır. Şu anda iCalendar spec yaklaşık% 85 ile çalışma yeteneğine sahip olduğunu, ancak yinelenen olaylar gerçekten zor. Ben şu anda onlara çalışıyorum. Bu tamamlandıktan sonra, kütüphane spec şey yapıyor tamamen yeteneğine sahip olacak.

qCal Google Code Homepage

Tadını çıkarın!