我编写了一个类而不是扩展 SplFileObject 来打开 CSV 并具有关联数组。它有效,但如果 csv 文件使用 CR 换行符,则无效。
我知道你可以像这样转换字符串换行符:
$string = str_replace($this::CRLF, $string::LF, $file);
$string = str_replace($this::CR, $string::LF, $file);
但我想知道如何在构造函数中转换换行符。
我如何创建我的文件:
$file = new CSVFile(__DIR__ . '/../../Resources/data/myfile.csv');
CSVFile.php 类
use \SplFileObject;
class CSVFile extends SplFileObject
{
private $keys;
public function __construct($file)
{
parent::__construct($file);
$this->setFlags(SplFileObject::READ_CSV);
}
public function rewind()
{
parent::rewind();
$this->keys = parent::current();
parent::next();
}
public function current()
{
return array_combine($this->keys, parent::current());
}
public function getKeys()
{
return $this->keys;
}
}