php://内存IO流和fgetcsv()

php://memory IO stream and fgetcsv()

我想解析类似 csv 的字符串,这样我就可以模拟 csv 并将其断言到测试用例中。

// init CSV-like string
$str = <<<EOD
    1,john\r\n
    2,smith\r\n
EOD;

// Open file Handler, puts the CSV-like string, rewind the file pointer
$fp = fopen('php://memory','r+');
fputs($fp,$str);
rewind($fp);

// Parse the CSV-like string
$parsed = [];
while (($data = fgetcsv($fp, 2048)) !== FALSE) {
    $parsed[] = fgetcsv($fp);
}

var_dump($parsed);

但它不会解析成数组。这是输出:

array (size=2)
  0 => 
    array (size=1)
      0 => null
  1 => boolean false
  1. 删除 \r\n,不需要
  2. 你每次循环移动指针两次,改为$parsed[] = $data

...代码很好,但是,@Verbatim 有两次 fgetcsv()。