usar sincronizar sincronización ics ical google convertir con como celular calendario archivo icalendar

icalendar - sincronizar - Codificación de nuevas líneas en archivos iCal



sincronizar google calendar con iphone (7)

Estoy tratando de averiguar cómo codificar las nuevas líneas en la parte de DESCRIPCIÓN de un archivo de iCal de manera que se importen correctamente en Outlook, Google Calendar y Apple Calendar.

El código original que heredé usaba "= 0D = 0A" con una codificación impresa entre comillas, que funciona muy bien en Outlook, pero no en Google Calendar.

La especificación parece indicar que debe usar "/ n" para representar una nueva línea. Esto funciona muy bien en el calendario de Google, pero Outlook solo coloca los caracteres literales "/ n" allí.

¿Hay alguna manera de hacer esto que funcione de manera consistente en todos los sistemas de calendario?


El comentario con el enlace al RFC de Matthew Bucket en la publicación original me ayudó. Citando desde allí:

Un carácter BACKSLASH en un valor de propiedad de "TEXTO" DEBE escaparse con otro carácter BACKSLASH

Así que hice un

$description = str_replace("/r/n", "//n", $description);

Y funcionó


Esta es mi respuesta para la DESCRIPTION

$filev = str_replace("/r/n", ''//n'', $p); $filev = str_replace("<br>",''//n'',$filev); $filev = (str_replace(";","/;",str_replace(",",''/,'',$filev)));


OK, parece que estoy respondiendo mi propia pregunta.

La forma correcta de hacerlo es usar "/ n" para los saltos de línea. Outlook no lo reconoció porque tenía "ENCODING = quoted-printable" en la descripción. Una vez que eliminé eso, Outlook mostró las nuevas líneas correctamente.

Además, para que el archivo se abra correctamente en Apple iCal, debe usar "VERSION: 2.0" para la versión del archivo. Si usa "VERSION: 1.0", le indicará que no puede leer el archivo (aunque se ajuste a la especificación 1.0).

NOTA: Como han mencionado otros, el archivo debe contener la cadena literal /n . Como la mayoría de los idiomas lo consideran como una secuencia de escape que significa un carácter de nueva línea, probablemente necesite usar la cadena //n en su código.


Podría valer la pena decir que necesita el literal / n, no el símbolo de nueva línea, literalmente barra diagonal inversa y luego n en el ical. Además, no te olvides de hacer el "plegado" de 75 caracteres también.


Según este RFC :

Las líneas de contenido están delimitadas por un salto de línea, que es una secuencia CRLF (carácter CR seguido de carácter LF).

Así que debes usar /r/n . Utilicé esto en cadenas sin escape de barra invertida adicional.


Su archivo de salida debe ser como abajo ---

BEGIN:VCALENDAR VERSION:2.0 PRODID:-//2013//#Ur Site Name#//EN BEGIN:VEVENT UID:[event]2012 DTSTART:20130101T100000 DTEND:20130101T120000 LOCATION: SUMMARY:#Meeting Title here# DESCRIPTION:What is realistic for financial services companies to achieve via Social Media channels? /n/nJoin us on 11th September 2013 at 4pm (BST) where we -----bla bla bla ---- END:VEVENT END:VCALENDAR

Aquí tienes que encargarte de la versión, debería ser 2.0 y Escape char ... / n (nueva línea), punto y coma (;) y coma (,). Si está escribiendo en .net, debería aparecer ... "// n", "//;" y "//,".

También puede consultar su archivo de salida en este sitio ... http://icalvalid.cloudapp.net/

Gracias, Bhaskar


Tuve que escapar de la salida en la cadena para establecer un literal "/ n" en el archivo de salida. Al igual que. Trabajó un encanto.

$events .= "DESCRIPTION:" . str_replace("/n","//n",str_replace(";","/;",str_replace(",",''/,'',get_event_contents()))) . "/n";