2010-06-17 38 views
3

让我们假设我有一个CSV文件中的以下行(我删除了在这个例子中,标题行):如何在实践中从CSV分割值文件到MySQL数据库

"500,000",2,50,2,90000 

我有一个PHP脚本读取CSV文件,将文件分解成单独的行,并将每行存储在名为$ linearray的数组中。然后,我使用foreach循环分别查看每行。

在foreach循环,我打破行成使用下列功能不同的变量:

$line = str_replace("'","\'",$line); 

从这里,我插入一个MySQL数据库中的值成单独的列。该脚本起作用。这些值被插入到数据库中,但我遇到了一个问题。我想:

"500,000" | 2 | 50 | 2 | 90000 

但我得到这个:

"500 | 000" | 2 | 50 | 2 | 90000 

的脚本是没有足够的智慧去了解它应该引号内跳过逗号。你知道我可以如何改变我的脚本,以确保我得到我期待的输出吗?

回答

2

可以使用str_getcsv功能

print_r(str_getcsv($line));

输出:

Array 
(
    [0] => 500,000 
    [1] => 2 
    [2] => 50 
    [3] => 2 
    [4] => 90000 
) 

类似fgetcsv()这个功能解析字符串作为它不像fgetcsv()输入这需要一个文件其输入。

+0

请注意,str_getcsv只适用于PHP 5.3及以上版本。对于较早的版本,将字符串“保存”到php://内存专用文件并使用fgetcsv解析它。不是说str_getcsv真的与这个问题有关,因为OP特别有一个文件,所以一次读一行可能是有道理的。 – 2010-06-17 07:06:18

+0

@Emil是的,我只是向他展示了一个使用他已有的'$ line'变量的例子。在最后,我说明了他应该为csv文件做些什么。 – 2010-06-17 10:21:41

相关问题