質問 1: fgetc ファイル ポインターを現在の場所から次の行に手動で移動するにはどうすればよいですか?
指定された数の区切り記号がカウントされるまで、データを 1 文字ずつ読み込んでいます。区切り文字のカウントが特定の数に達すると、新しい行 (レコード区切り文字) まで行の残りをコピーする必要があります。次に、次のレコードから再び文字ごとにコピーを開始する必要があります。
質問 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