我有一个txt文件,我需要将它上传到我的mysql数据库中。所以我在php.net中找到了这段代码:
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
有效。当我给'print_r'时,我有这个:
PAGE:1
ANUALDATA
Ver:1.651.A
Site data ou www.sitedata.com
COUNT:3758-3 NAME:USER NAME IDUS: 262.911.258-62
PLACE:030 IDCUS:11003
DATE 31/12/2011
VALUE................................U$ 200,00
PROCESS DATE 31/12/2011
VALUE NEEDED.....................U$ 3,45
PAID VALUE..........U$ 50,00
PAGE:2
ANUALDATA
Ver:1.651.A
Site data ou www.sitedata.com
COUNT:3758-3 NAME:USER NAME IDUS: 262.911.258-62
PLACE:030 IDCUS:11003
DATE 31/12/2011
VALUE................................U$ 200,00
PROCESS DATE 31/12/2011
VALUE NEEDED.....................U$ 3,45
PAID VALUE..........U$ 50,00
PAGE:3
ANUALDATA
Ver:1.651.A
Site data ou www.sitedata.com
COUNT:3758-3 NAME:USER NAME IDUS: 262.911.258-62
PLACE:030 IDCUS:11003
DATE 31/12/2011
VALUE................................U$ 200,00
PROCESS DATE 31/12/2011
VALUE NEEDED.....................U$ 3,45
PAID VALUE..........U$ 50,00
现在出现了我的问题。我看到了其他的例子,但真的可以用它来做我的情况。 我需要做一些事情,比如改变$ key = $ val中的每一行,比如
[VALUE] => 200,00
[PROCESS DATE] =>31/12/2011
你会注意到这是页面,我需要把它制成像这样的东西
[0]
[VALUE] => 200,00
[PROCESS DATE] =>31/12/2011
[1]
[VALUE] => 200,00
[PROCESS DATE] =>31/12/2011
因此,我将在db中的每一行中插入此数据。有办法吗? 如果我只能获得de $ value,那也可以。
修改
它不是CSV,它是另一个系统创建的TXT,我无法控制它。
答案 0 :(得分:0)
不知道这是否是代码段的结果,我无法看到echo "<p> $num fields in line $row: <br /></p>\n";
的打印输出。此外,它似乎是分隔符“:”(假设它不会出现在文本中的任何其他位置)。那就说,试试这个......
$row = 1;
$res = array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$tmpArr = array();
for ($c=0; $c < $num; $c++) {
list($key, $val) = explode(":", $data[$c]);
$tmpArr[$key] = $val;
}
$res[] = $tmpArr;
}
fclose($handle);
}
print_r($res);
答案 1 :(得分:0)
如果你只想将它加载到MySQL中,你有没有看过LOAD DATA INFILE?
http://dev.mysql.com/doc/refman/5.5/en/load-data.html
LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;