PHP:iCal创建,如何在描述中创建新行


PHP: iCal creations, how to make a new line in a description

我使用以下内容为php脚本的outlook创建日历邀请。然而,这并没有给我带来新的前景。有办法做到这一点吗?如果你做不到,那就太傻了!

  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

您应该将''r''n替换为:

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

另请参阅iCal文件中的换行符编码

您可以将=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==

在Windows上,您可以使用'r'n创建新行。

详细介绍:

ASCII中的'r是代表"回车"的CR
ASCII中的'n是代表"换行"的LF

Windows需要两者的结合,而Linux系统只需使用'n

维基百科的Newline页面上有大量的信息(可能比你感兴趣的还要多)。