Почему этот PHP fgetcsv () отображает только определенные части csv? - PullRequest
1 голос
/ 31 августа 2011

У меня есть этот PHP:

$handle = fopen($_FILES["csvfile"]["tmp_name"], "r");

while (($data = fgetcsv($handle, 5000, ",", '"')) !== FALSE) {
    echo "<pre>";
    print_r($data);
    echo "<pre>";
}

<form method="post">
<input type="file" name="csvfile">
<input type="submit>

CSV предоставляется HTML <input type="file">. Прямо сейчас это распечатывает массивы, которые являются только первым значением и запятой или каждой строкой, вместо того, чтобы распечатывать массив из одиннадцати значений каждой строки. Я понял, что это правильно, но как-то испортил мой код и не могу понять, что я сделал.

Вот пример CSV:

"lorem","ipsum","dolor","sit","amet","consectetuer","adipiscing","elit","sed ","diam","nonummy",

1 Ответ

1 голос
/ 31 августа 2011

В том же коде, который вы опубликовали, я получаю хороший отформатированный результат

file_put_contents( 'tmp.tmp',
'"lorem","ipsum","dolor","sit","amet","consectetuer","adipiscing","elit","sed ","diam","nonummy",
"1lorem","1ipsum","1dolor","1sit","amet","consectetuer","adipiscing","elit","sed ","diam","nonummy",
');

$handle = fopen("tmp.tmp", "r");

while (($data = fgetcsv($handle, 5000, ",", '"')) !== FALSE) {
    echo "<pre>";
    print_r($data);
    echo "<pre>";
}

Я получаю:

Массив ( [0] => Лорем [1] => ipsum [2] => Долор [3] => сидеть [4] => амет [5] => концерт [6] => Adipiscing [7] => элит [8] => sed [9] => диам [10] => nonummy [11] => )

Вы, вероятно, делаете что-то не так в другом месте и не замечаете этого.

...