Нет разрывов строк в файле vcalendar при отображении значений с помощью PHP
У меня есть файл vcalendar. Это прекрасно работает, если я наберу его между тегами php, как это
?>
BEGIN:VEVENT
DTSTART;VALUE=DATE:20110422
DTEND;VALUE=DATE:20120529
DTSTAMP:20120529T124028Z
UID:7a6db67f3edff4729956c47ec@calendarlabs.com
CREATED:20111213T123901Z
DESCRIPTION:Visit http://www.calendarlabs.com/holidays/ to know more about New Year's Day and for any other calendar needs.
LAST-MODIFIED:20111213T123901Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:New Year's Day
TRANSP:TRANSPARENT
END:VEVENT
<?php
echo :
Однако, как только я добавлю это в эхо-операторы, вот так:
echo "BEGIN:VEVENT";
тогда это не работает. Я пытался добавить \ n,
все.
Также не работает, если я делаю что-то вроде:
DTSTART;VALUE=DATE:<?php echo $date; ?>
Кто-нибудь еще может увидеть решение здесь?
2 ответа
Закрывающий тег PHP пожирает пробелы после него. Если вы хотите сохранить переводы строк при выводе с помощью PHP, вам необходимо выполнить одно из следующих действий:
Выведите символ новой строки явно:
DTSTART;VALUE=DATE:<?php echo $date, PHP_EOL; ?>
Используйте синтаксис heredoc:
echo <<<END BEGIN:VEVENT ... DTSTART;VALUE=DATE:$date END;
Ваш веб-сервер, вероятно, не распознает файл.ics как скрипт, поэтому он не отправляет файл на процессор гипертекста (php) для обработки инструкций внутри тегов php. Вы должны указать своему веб-серверу, чтобы он воспринимал это как php-файл. Учебник по добавлению пользовательских расширений можно найти здесь: http://creativebriefing.com/custom-file-extensions/.