php://memory IO stream and 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()。