4

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;
    }

}

4

2 に答える 2

5

何をしたいのかよくわかりませんが、これを試しましたか? ini_set('auto_detect_line_endings',true);

于 2013-08-30T20:47:20.640 に答える
0

私がこれを行うことを考えることができる唯一の方法(私が知らないphpからのサポートがあると予想されます)は、ファイルを読み取り、改行を置き換え、一時ファイルに書き込み、一時ファイルを開くことです。

于 2013-08-28T08:56:39.253 に答える