根据API返回的数据创建CSV

时间:2015-08-13 23:11:14

标签: php csv

我尝试使用Mailchimp的Export API生成给定列表中所有成员的CSV文件。这里' documentation以及它们提供的示例PHP代码:

$apikey = 'YOUR_API_KEY';
$list_id = 'YOUR_LIST_ID';
$chunk_size = 4096; //in bytes
$url = 'http://us1.api.mailchimp.com/export/1.0/list?apikey='.$apikey.'&id='.$list_id;

/** a more robust client can be built using fsockopen **/
$handle = @fopen($url,'r');
if (!$handle) {
  echo "failed to access url\n";
} else {
  $i = 0;
  $header = array();
  while (!feof($handle)) {
    $buffer = fgets($handle, $chunk_size);
    if (trim($buffer)!=''){
      $obj = json_decode($buffer);
      if ($i==0){
        //store the header row
        $header = $obj;
      } else {
        //echo, write to a file, queue a job, etc.
        echo $header[0].': '.$obj[0]."\n";
      }
      $i++;
    }
  }
  fclose($handle);
}

这对我来说效果很好,当我运行这个文件时,我最终得到了这种格式的一堆数据:

Email Address: xdf@example.com
Email Address: bob@example.com
Email Address: gerry@example.io

我想要做的是将其转换为CSV(传递到我服务器上的某个位置),而不是echo数据。是否有可以使用的库或简单的语法/ snippit来实现这一目标?

3 个答案:

答案 0 :(得分:1)

这些对我而言。从现在开始,您可能希望实际阅读一些文档,而不是复制和粘贴您的生活方式。其他人不会像我一样好。这是php网站上的文件系统功能列表。 http://php.net/manual/en/ref.filesystem.php将文件输出转换为所需的csv格式是留给读者的一项练习。

HttpSessionState session = HttpContext.Current.Session;

答案 1 :(得分:1)

如果格式简单如下:

Email Address, xdf@example.com

Email Address, bob@example.com

Email Address, gerry@example.io 

是你所追求的,然后你可以做到:



$handle = @fopen($url,'r');
$csvOutput = "";
if (!$handle) {
  echo "failed to access url\n";
} else {
  $i = 0;
  $header = array();
  while (!feof($handle)) {
    $buffer = fgets($handle, $chunk_size);
    if (trim($buffer)!=''){
      $obj = json_decode($buffer);
      if ($i==0){
        //store the header row
        $header = $obj;
      } else {
        //echo, write to a file, queue a job, etc.
        echo $header[0].', '.$obj[0]."\n";
        $csvOutput .= $header[0].', '.$obj[0]."\n";
      }
      $i++;
    }
  }
  fclose($handle);
}
$filename = "data".date("m.d.y").".csv";
file_put_contents($filename, $csvOutput);




变量$ csvOutput包含CSV格式字符串。

答案 2 :(得分:-1)

没有冒犯,但StackOverflow并不意味着让人们代码。

大概有一个dozen libraries for CSV,但您只需更改输出以匹配使用数组和implode数组的CSV格式。

另外,请查看here