为什么这个PHP fgetcsv()只显示csv的某些部分?

时间:2011-08-31 13:29:33

标签: php csv fgetcsv

我有这个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">提供。现在它打印出的数组只是第一个值和逗号或每一行,而不是打印出每行11个值的数组。我做到了做正确的事情,但不知何故搞砸了我的代码,无法弄清楚我做了什么。

以下是CSV的示例:

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

1 个答案:

答案 0 :(得分:1)

在您发布的相同代码上,我得到了一个很好的格式化结果

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] =&gt; LOREM     [1] =&gt;存有     [2] =&gt;悲     [3] =&gt;坐     [4] =&gt;阿梅德     [5] =&gt; consectetuer     [6] =&gt; adipiscing     [7] =&gt; ELIT     [8] =&gt; SED     [9] =&gt;直径     [10] =&gt; nonummy     [11] =&gt; )

你可能在其他地方做错了,而没有注意到它。