0

Open Office Spreadsheetで生成されたcsvがあります。区切り文字はコンマ、テキストラッパーは"です。

スプレッドシートの列だけにしたいのですが、これは次のようなKey-Valueリストです。

a -> b
aa -> bb
aaa -> bbb

したがって、私のスプレッドシートには2つの列しかなく、各行にはキーと値のペア、セル内の各キー、セル内の各値が含まれています。しかし、私が使用するとき

if ($_FILES ['userfile'] ['error'] == UPLOAD_ERR_OK &&
    is_uploaded_file ( $_FILES ['userfile'] ['tmp_name'] )) {

        $csvfile = file_get_contents ( $_FILES ['userfile'] ['tmp_name'] );
    }

    $dict = str_getcsv($csvfile);

そして、その後var_dump $ dict、私は

array(4) { [0]=> string(1) "a" [1]=> string(6) "b "aa"" [2]=> 
            string(8) "bb "aaa"" [3]=> string(3) "bbb" }

最初の値「b」と2番目のキー「aa」が1つのインデックスに格納されているインデックス1を参照してください。

OpenOfficeは、値の後ろ、つまり新しい行の前にコンマを配置しません。2つの文字列が1つのインデックスになってしまうのを防ぐにはどうすればよいですか?どういうわけかstr_getcsvに、2つの「が続く場合、それは区切り文字でもある」と伝えることができますか?または、常に#を含む3番目の列を追加し、「#が含まれている場合は改行します」と言うことができますか?(試してみましたが、管理できませんでした。)または、csvでキー、値、改行を期待する関数もありますか?

これを行う正しい方法は何ですか?人々はこれを頻繁に行っていると思いますが、グーグルで検索する方法がわかりません。

ありがとう!

4

1 に答える 1

1

を使用してはfgetcsv()どうですか? http://www.php.net/manual/en/function.fgetcsv.php

行ごとに読み取ります。リンクに例があります。

于 2012-06-11T09:24:52.250 に答える