экспорт — загрузка файла PHP добавляет дополнительные пробелы

В настоящее время я работаю с плагином jQuery FullCalendar, и я только что создал функцию, которая экспортирует мои события в формат Календаря Google.
Проблема, с которой я сталкиваюсь, заключается в том, что при загрузке у меня появляются два лишних пробела в начале файла. К сожалению, импорт не удается из-за этих пробелов.

Вот как я создаю файл и генерирую загрузку:

    $ical = "BEGIN:VCALENDAR
VERSION:2.0";
foreach($events as $e){
$ical .= "\nBEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@example.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART: ". $this->formatDate($e['E_dateStart']) ."DTEND:". $this->formatDate($e['E_dateEnd']) ."SUMMARY:". $e['E_description'] ."END:VEVENT";
}
$ical .= "\nEND:VCALENDAR";
$ical = str_replace("\t", "", $ical);
$ical = str_replace(" ", "", $ical);

header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=calendar.ics');
echo "$ical";
exit;

И тогда загруженный файл выглядит так:

    BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:3a24a50a6b9af94c0665c6528f9e38aa@example.test
DTSTAMP:20150330T083230Z
DTSTART:20150329T000000Z
DTEND:20150327T001200Z
SUMMARY:test
END:VEVENT
END:VCALENDAR

У меня есть два пробела прямо перед началом VCALENDAR, и я не могу понять, откуда он взялся. Я предполагаю, что это вызвано эхом PHP, но я не уверен, и я не знаю, как я мог бы сделать это по-другому.

1

Решение

Я пришел с той же проблемой, и мой друг нашел быстрое решение для этого.

Вы должны просто добавить одну строку перед вашим кодом.

ob_clean();

$ical = "BEGIN:VCALENDAR
VERSION:2.0";
3

Другие решения

Я узнал, откуда это взялось.
При поиске в каждом файле я вызывал свой контроллер и у некоторых менеджеров появлялись лишние пробелы после закрывающего тега PHP.

Так что, если эта проблема возникает с кем-то еще, просто проверьте ваши менеджеры или все, что вы вызываете / инициализируете в вашем контроллере, проверьте конец файла и удалите лишние пробелы.

1

trim() твой друг. 🙂 Если пространство все еще показывает, когда вы echo trim($ical), у вас должны быть завершающие пробелы где-то в вашем файле, предшествующие приведенному выше коду, возможно, перед вашим открывающим тегом PHP.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector