apache — перевод строки не отображается должным образом в vCard, созданной в переполнении стека

У меня есть следующий код, который я использую для создания vCard (обратите внимание, что переменные объявлены ранее)

BEGIN:VCARD
VERSION:4.0
N:<?php echo $person["last"]; ?>;<?php echo $person["first"];?>;;;
FN:<?php echo $person["first"];?> <?php echo $person["last"]; ?>
ORG:<?php echo str_replace(",",'\,',Site::$NAME);?>
TITLE:CPA
TEL;TYPE=work,voice;VALUE=uri:tel:+1-<?php echo Site::$PHONE; ?>
TEL;TYPE=work,fax;VALUE=uri:tel:+1-<?php echo Site::$FAX; ?>
ADR;TYPE=work;LABEl="<?php echo Site::$ADDRESS . '\n' . Site::$LINE_TWO . '\n' . Site::$CITY . '\,' . Site::$STATE . " " . Site::$ZIP; ?>":;<?php echo Site::$LINE_TWO; ?>;<?php echo Site::$ADDRESS; ?>;<?php echo Site::$CITY; ?>;<?php echo Site::$STATE; ?>;<?php echo Site::$ZIP; ?>;United States of America
EMAIL:<?php echo $person["email"]; ?>
END:VCARD

Но проблема в том, что я не получаю новые строки, где я ожидаю. Пример вывода:

BEGIN:VCARD
VERSION:4.0
N:LAST;FIRST;;;
FN:FIRST LASTORG:ORGANIZATIONTITLE:TITLE
TEL;TYPE=work,voice;VALUE=uri:tel:PHONE_NUMBERTEL;TYPE=work,fax;VALUE=uri:PHONE_NUMBERADR;TYPE=work;LABEl="ADDRESS":;ADDRESS
EMAIL:EMAILEND:VCARD

По какой-либо причине некоторые из новых строк есть, а некоторые никогда не выводятся. Есть ли причина, почему это происходит, и есть ли способ это исправить?


редактировать: Я установил следующие заголовки перед любым выводом:

header("Content-Type: text/vcard");
header('Content-Disposition: attachment; filename="'. $person["first"] . " " . $person["last"] . ".vcf" . '"');

3

Решение

Причина в том, что php удаляет переводы строк после закрывающего тега php ?>,
Есть несколько способов обойти это.

  • Вы можете, например, добавить пробел после закрывающего тега
  • или добавьте дополнительный символ новой строки после закрывающего тега
  • или ты мог echo все данные vcard, используя \n как переводы строк, вместо открытия и закрытия php каждый раз
1

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

Других решений пока нет …

По вопросам рекламы [email protected]