php vcard 显示为纯文本

标签 php vcf-vcard

我的网站上有一项新功能,允许用户获取 vcard 文件。此功能从我的数据库(这个有效)读取数据并生成 vcard。

文件是:vcard.php,我将用户 ID 作为 GET 传递

然后我使用那个id得到所有的信息

我的问题是当我想要获取 vcard 时,它显示为文本。这是我的代码的简化版本:

<?php

class Vcard {

  public function __construct() {
    $this->props = array();
  }

  public function setName($family, $first) {
    $name = $family . ';' . $first . ';';
    $this->props['N'] = $name;
    if(!isset($this->props['FN'])) {
      $display = $first . ' ';
      $display .= $family;
      $this->props['FN'] = trim($name);
    }
  }
  /* and all the rest of my props */
  public function get() {
    $text = 'BEGIN:VCARD' . "\r\n";
    $text.= 'VERSION:2.1' . "\r\n";
    foreach($this->props as $key => $value) {
      $text .= $key . ':' . $value . "\r\n";
    }
    $text.= 'REV:' . date("Y-m-d") . chr(9) . date("H:i:s") . "\r\n";
    $text.= 'MAILER:My VCard Generator' . "\r\n";
    $text.= 'END:VCARD' . "\r\n";
    return $text;
  }
}

$v = new Vcard();
$v->setName('Smith', 'John');
echo $v->get();

代码有效,为什么不能将其作为 vcard 获取?

最佳答案

给定http://en.wikipedia.org/wiki/VCard

你当然需要在 echo $v->get(); 之前添加下面这行

header('Content-Type: text/vcard');

为了告诉客户端的浏览器它将收到一个 VCard 文件。

关于php vcard 显示为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688671/

相关文章:

vcf-vcard - 将 csv 文件转换为 vcard 2.1 和 3.0 的工具

php - 使用连接消除循环中的多个 SELECT

php - 使用ajax加载下拉值后,Yii2 kartik依赖的下拉列表未使用ajax更改所选值

iphone - 如何在 iPhone 应用程序的 Composer 表中添加 vcardfile

c# - 扫描 QR 码 (vcard) 并在 windows phone 7 上保存联系人

tomcat - tomcat webdav 是否支持carddav?

php - 需要将其中包含/逗号的字符串正确导出到 CSV 文件中

php - 获取Laravel的store函数唯一ID

php - 只有一半的推送通知到达设备 (APNS)

python - 使用python和re库读取vcf文件数据