我是PHP和Laravel的新手,我需要打开文件并解析内容以将它们传递给数据库。文本文件具有固定的列宽。它没有分隔符或标题。我认为使用子字符串并将它们分配给变量将是正确的方法,但我仍然在学习语言,我不知道如何实现它。
以下是文本文件中的数据示例:
1618 0002 9 1261 4141191269 4141191269 4 002 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 9 6 1172 2129922686 2129922686 4 013 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 7 6 521 1188# 1172 1172 0 001 4
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 9 6 1252 2129922686 2129922686 4 003 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
1607 0009 7 9 505 04129284134 1245 1245 56984 4
1619 0000 7 6 521 1188# 1252 1252 1 002 4
列名:
id
time
duration
cond_code
code_dial
code_used
dialed_num
calling_num
clg_num_in_tac
auth_code
frl
ixc_code
in_crt_id
out_crt_id
答案 0 :(得分:2)
不知道为什么每个人都建议使用解析制表符分隔文件的方法。使用unpack()。我曾经通过手动解析文件和编写函数来提取数据来做到这一点,这很浪费时间。我发现了这个article,它说明了如何以一种干净的自我记录方式进行操作。
$records[] = unpack('A40Address 1/A40Address 2/A25City/A2State/A10Zip Code',$row);
答案 1 :(得分:0)
使用文件和Laravel集合:
Route::get('/import', function()
{
$lines = collect(file(__DIR__.'/file.txt'))->map(function($item) {
return explode("\t", $item);
});
dd($lines);
});
鉴于此,制表符分隔,文件:
1618 0002 9 1261 4141191269 4141191269 4 002 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
1606 0000 9 1159 4169191388 4169191388 4 012 0
你应该得到像
这样的东西