php - 使用str_get_csv将csv转换为数组而不进行物理上载

时间:2013-08-08 11:36:26

标签: php arrays

我只是想上传一个csv文件并将其转换为数组。

我在上一篇文章中读到,您可以使用str_getcsv()而无需将csv文件实际上传到服务器。

这是正确的还是我必须先将文件存储在某处,然后再运行str_getcsv(),然后再将其删除?

这是我目前的简单代码(我使用的是php 5.3):

if (isset($_POST['file_upload'])){
    $csv = str_getcsv($_POST['csvfile']);

echo '<pre>';
print_r($csv);
echo '</pre>';
}

3 个答案:

答案 0 :(得分:1)

您应该使用$_FILES数组来检查文件上传 使用此代码:

if(isset($_FILES["csvfile"])) {
    $csv=str_getcsv(file_get_contents($_FILES["csvfile"]["tmp_name"]));

    echo '<pre>';
    print_r($csv);
    echo '</pre>';
}

答案 1 :(得分:0)

默认情况下,文件存储在临时目录中,可由$_FILES['file_name']['tmp_name']访问:

如您所见,str_getcsv方法的第一个参数必须是字符串,为此您可以使用file_get_contents

$csv = str_getcsv(file_get_contents($_FILES['csvfile']['tmp_name']));

答案 2 :(得分:0)

如果您要提交文件(使用<input type="file">),则需要使用move_uploaded_file()。该文件已经在磁盘上(如果表单提交成功),您只需要移动它。在这种情况下,最方便的是使用fgetcsv()打开文件并将其解析为数组(参见该函数文档中的示例)。

如果您没有使用例如<textarea></textarea>提交文件而是提交文本,那么您不必将$_POST变量中的字符串写入磁盘,但可以使用{{3}将字符串解析成数组。