PHP: творения iCal, как сделать новую строку в описании - PullRequest
4 голосов
/ 13 января 2012

Я использую следующее, чтобы создать приглашение календаря для Outlook для сценария php. Однако \ n не дает мне новую линию в перспективе. Есть ли способ сделать это? Кажется глупым, если ты не можешь!

  function addToCalendar($calEmail, $calSubject, $calDesc) 
  {

$calEmail = 'freelance@skinzy.org';
$description = $calDesc;
$message="BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20110718T121000Z
DTEND:20110718T131000Z
DTSTAMP:20110525T075116Z
ORGANIZER;CN=TOMS TEST:mailto:system@skinzy.org
UID:12345678
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Yup:mailto:sample@test.com
DESCRIPTION New \n Line
LOCATION: I AM THE LOCATION
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY: TEST SUMMARY
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR";

$headers = "From: From Name <From Mail>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/calendar; method=REQUEST;\n";
$headers .= '        charset="UTF-8"';
$headers .= "\n";
$headers .= "Content-Transfer-Encoding: 7bit";


$subject = "Meeting Subject";
$subject = html_entity_decode($calSubject, ENT_QUOTES, 'UTF-8');


if(mail($calEmail, $calSubject, $message, $headers)) {

    echo "sent";
}else {
    echo "error";
}


  }

Это часть DESCRIPTION New \n Line, с которой у меня проблемы.

Любая помощь будет принята с благодарностью

Tom

Ответы [ 3 ]

9 голосов
/ 03 сентября 2012

Вы должны заменить \ r \ n на \ n:

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

См. Также Кодирование новых строк в файлах iCal

1 голос
/ 09 апреля 2015

Вы можете использовать =0D=0A для новой строки с соответствующей кодировкой:

DESCRIPTION;ENCODING=QUOTED-PRINTABLE:This is the first line.=0D=0AThe Second line.=0D=0AThe third line.

или альтернативным подходом (используя base64):

DESCRIPTION;FMTTYPE=text/html;ENCODING=BASE64:PHA+Tm9ybWFsIDAgZmFsc2UgZmFsc2UgZmFsc2UgTWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3A+DQo8YnIgY2xhc3M9ImNsZWFyIiAvPg==
1 голос
/ 13 января 2012

В Windows вы создаете новую строку, используя \r\n.

Для более подробной информации:

\r в ASCII - CR означает «возврат каретки»
\n в ASCII означает LF, что означает "перевод строки"

Windows требует комбинации обоих, в то время как системы Linux просто используют \n.

На странице 10101 * Newline Википедии .

есть тонны информации (вероятно, больше, чем вам когда-либо было бы интересно узнать)
...