php - 在 php 中创建的 vCard 中未按预期出现换行符

标签 php apache newline vcf-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" . '"');

最佳答案

这是因为 php 删除了 php 结束标记 ?> 之后的换行符。 有几种方法可以解决这个问题。

  • 例如,您可以在结束标记后附加一个空格
  • 或在结束标记后添加一个额外的换行符
  • 或者您可以使用 \n 作为换行符回显 整个 vcard 数据,而不是每次都打开和关闭 php

关于php - 在 php 中创建的 vCard 中未按预期出现换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27914035/

相关文章:

Python 字符串连接 - 连接 '\n'

php - 在循环中取消链接不起作用

javascript - 如何将 JSON 编码的 PHP 数组发送到同一页面上的数据表

java - AWS IoT SDK - 构建 AWSIotData 和 AWSIotClient 时出现异常

c - fgets() 在 fscanf() 之后不起作用

c# - ASP.NET MVC Html.Encode - 新行

php - 了解嵌套的 PHP 三元运算符

php - 在填充的 PHP 下拉列表中选择匹配的值

php - PHP/Apache 中的 Inkscape 不会将字体呈现为 PNG

php - 尽管使用 PHP 具有适当的权限,但权限被拒绝