Нет разрывов строк в файле 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/.

Другие вопросы по тегам