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
- 删除
\r\n
,不需要
- 你每次循环移动指针两次,改为
$parsed[] = $data
...代码很好,但是,@Verbatim 有两次 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
- 删除
\r\n
,不需要 - 你每次循环移动指针两次,改为
$parsed[] = $data
...代码很好,但是,@Verbatim 有两次 fgetcsv()。