【问题标题】:Newlines not appearing as expected in vCard created in php在 php 中创建的 vCard 中没有按预期出现换行符
【发布时间】:2015-01-13 02:26:03
【问题描述】:

我有以下用于生成 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" . '"');

【问题讨论】:

  • 您是否尝试过添加回车?某些情况需要 CRLF(回车,换行 [\r\n]),而不仅仅是一个直线换行(换行)字符。
  • @BrandonAnzaldi 我有点困惑。我只是在 php 文件本身中使用返回按钮,所以我实际上并没有直接使用“\n”。为什么它会在前几行工作,而不是其余的?
  • 啊,我看错了部分。这确实很奇怪。它有可能呈现为 HTML,这意味着换行符实际上并未呈现为换行符,但这并不能解释为什么其中一些有换行符而另一些没有。我唯一的其他想法是某种编码错误,或者 PHP 脚本本身的奇怪输出。也许echo取出电子名片,并明确声明换行符可以解决问题。您可以连接任何需要的变量。不过,它并不能解释为什么换行符会如此断断续续地工作。
  • @BrandonAnzaldi 我将编辑问题以显示指示响应应该是 vCard 的行
  • 你可以考虑using a library for this

标签: php apache newline vcf-vcard


【解决方案1】:

这样做的原因是 php 在 php 结束标记 ?&gt; 之后删除了换行符。 有几种方法可以解决这个问题。

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

【讨论】:

  • 哇。谷歌搜索后,我很惊讶我从来没有发现这个。这对未来也有好处。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多