【发布时间】:2017-03-09 10:51:31
【问题描述】:
CSV 中的数据如下所示,只有一列
| BeKwX8iN3wzHDvCaxBD1 |
| 3rPB9t6EF3RGla28YbLE |
| OAYRwbrkctcVbrXaaTef |
| N8lxYdvx47FI7eYt5FUX |
| zwtRdHr3aYYnX9avcMjX |
.....
文件内容看:https://drive.google.com/a/hiiir.com/file/d/0B4ZVHStLEPq3bklUUHkzbDN1MkE/view?usp=sharing
代码
$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);
}
问题是当我打印$num时,我得到了int(1),因为它们都在一个array()中
array(1) {
[0]=>
"BeKwX8iN3wzHDvCaxBD1
3rPB9t6EF3RGla28YbLE
OAYRwbrkctcVbrXaaTef
N8lxYdvx47FI7eYt5FUX
zwtRdHr3aYYnX9avcMjX"}
我知道fgetcsv()由$delimiter控制,这个案例是,,但它不适合我的案例。可以分隔 20 个字符吗?
【问题讨论】:
-
似乎没有真正的 CSV,所以为什么要使用
fgetcsv如果文件的每一行看起来像|abc|然后使用array_map(function($a){ return trim($a,'|');},file($serial['tmp_name']));以获取数组中的数据(到达行的一个条目)或使用fgets()而不是fgetcsv()。 -
您可以将
$delimiter更改为您需要的任何内容,阅读更多:php.net/manual/en/function.fgetcsv.php