来自CSV的数据,如下所示,只有一列
$row = 1;
if (($handle = fopen($serial['tmp_name'], "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);
}
文件内容外观:https://drive.google.com/a/hiiir.com/file/d/0B4ZVHStLEPq3bklUUHkzbDN1MkE/view?usp=sharing
代码
$num
问题在于,当我打印array(1) {
[0]=>
"BeKwX8iN3wzHDvCaxBD1
3rPB9t6EF3RGla28YbLE
OAYRwbrkctcVbrXaaTef
N8lxYdvx47FI7eYt5FUX
zwtRdHr3aYYnX9avcMjX"}
时,我得到了int(1),因为它们都在一个数组中()
fgetcsv()
我通过$ delimiter知道,
controll,这个案例是{{1}},但它不适合我的情况。是否可以分开20个字符?
答案 0 :(得分:1)
您无法使用fgetcsv读取固定长度的CSV,您必须自己动手。
[编辑] 这里的问题不是CSV问题,它是由结束行“\ r”引起的。请参阅下面的评论来处理它。 [/编辑]
在您的情况下,请使用分隔符参数:
$data = fgetcsv($handle, 1000, "|")
您的代码示例:
<?php
if (($handle = fopen('csv.txt', "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, "|")) !== FALSE) {
array_pop($data);
array_shift($data);
var_dump($data);
}
fclose($handle);
}
结果:
array(1) {
[0]=>
string(22) " BeKwX8iN3wzHDvCaxBD1 "
}
array(1) {
[0]=>
string(22) " 3rPB9t6EF3RGla28YbLE "
}
array(1) {
[0]=>
string(22) " OAYRwbrkctcVbrXaaTef "
}
array(1) {
[0]=>
string(22) " N8lxYdvx47FI7eYt5FUX "
}
array(1) {
[0]=>
string(22) " zwtRdHr3aYYnX9avcMjX "
}