问题 1:如何手动将 fgetc 文件指针从当前位置移动到下一行?
我正在逐个字符地读取数据,直到计算出指定数量的分隔符。一旦定界符计数达到一定数量,它需要复制该行的其余部分,直到一个新行(记录定界符)。然后我需要从下一条记录开始再次开始逐个字符地复制。
问题2:手动将文件指针移动到下一行是正确的想法吗?我只会爆炸(在“\n”处),但我必须先计算管道分隔符,因为“\n”并不总是记录分隔符。
这是我的代码(它将所有数据放入正确的记录中,直到它到达记录中的最后一个分隔符“|”。然后它将该行的其余部分放入下一条记录,因为我还没有弄清楚如何正确地制作它在指定的 | 计数后查找 '\n'):
$file=fopen("source_data.txt","r") or exit ("File Open Error");
$record_incrementor = 0;
$pipe_counter = 0;
while (!feof($file))
{
$char_buffer = fgetc($file);
$str_buffer[] = $char_buffer;
if($char_buffer == '|')
{
$pipe_counter++;
}
if($pipe_counter == 46) //Maybe Change to 46
{
$database[$record_incrementor] = $str_buffer;
$record_incrementor++;
$str_buffer = NULL;
$pipe_counter = 0;
}
}
样本数据:
1378|2009-12-13 11:51:45.783000000|"Pro" |"B13F28"||""|1||""|""|""|||False|||""|""|""|""||""||||||2010-12-15 11:51:51.330000000|108||||||""||||||False|""|""|False|""|||False
1379|2009-12-13 12:23:23.327000000|"TLUG"|"TUG"||""|1||""|""|""|||False|||""|""|""|""||""||||||1943-04-19 00:00:00|||||||""||||||False|""|""|False|""|||False