2013-09-04 1 views
2

Мне очень не повезло в попытке восстановить экспорт ICAL в Google Calendar. Проблема заключается в том, что длинное описание (поле Описание) будет иметь разрыв строки, содержащий эти символы:Regex для восстановления строк в Google Calendar ICAL export

[FIRST LINE] 0d 0a 20 [SECOND LINE] 

Так что это возврат каретки \ г, а New Line \ п и простое пространство. Я делаю это в preg_replace PHP - почему этот не работает?

$text = preg_replace('/\r\n\s/', '', $text); 

Заранее спасибо.

EDIT:

выше регулярное выражение работает отлично; проблема была где-то в другом месте. Предпосылки: Это плагин wordpress, который импортирует файлы ICAL. При чтении файла ICAL некоторый синтаксический анализ просто удалил все новые строки. Так что это вопрос уровня 8 от моего имени. Спасибо всем!

+0

Я просто догадываюсь, но вам, вероятно, нужно использовать «многострочный режим», так как '\ r \ n' отмечает конец строки, и пространство не будет сопоставлено. Я не знаю PHP, поэтому я не могу показать вам, как это сделать. – alan

+0

echo strlen (preg_replace ('/ \ r \ n \ s /', '', "a \ r \ n b")); выходы 2 ... кажется, работают для меня. Вы уверены, что ваши данные имеют этот формат? – Christoph

+0

@alan: попробовал/м, но не работал. – squeakingsneaker

ответ

1

Только для справки, вы не ремонт google iCalendar export, а скорее дело с линией сгибания iCalendar. См. http://tools.ietf.org/html/rfc5545#section-3.1

Есть другие функции iCalendar, с которыми вы, вероятно, столкнетесь в какой-то момент. Например, посмотрите на http://tools.ietf.org/html/rfc5545#section-3.3.11

Другими словами, вы можете посмотреть существующие библиотеки iCalendar в качестве альтернативы самому синтаксическому анализу.

+0

Бесстыдные, но соответствующие саморекламы: https://github.com/fruux/sabre-vobject – Evert

 Смежные вопросы

  • Нет связанных вопросов^_^