2011-07-26 17 views
0

年月日の関連する日付を含むテキストファイルがあります。私は2009年からファイルを扱っていますが、その構造は2011年のファイルと同じで、2012年のファイルになります。あなたが見ることができるように、各日付の部分は1とMMDDYY形式で日付が続くスペースで始まっ:関連する検索情報を表示するPHP .txtファイル検索

1 070109 
MON JUN 29........ THU JUL 09 
TUE JUN 30........ MON JUL 13 
WED JUL 01........ MON JUL 13 
THU JUL 02........ TUE JUL 14 
FRI JUL 03........ TUE JUL 14 
     CIVIL TRAFFIC 
MON JUN 29........ WED JUL 29 
TUE JUN 30........ THU JUL 30 
WED JUL 01........ FRI JUL 31 
THU JUL 02........ MON AUG 03 
FRI JUL 03........ MON AUG 03 

1 070209 
TUE JUN 30........ MON JUL 13 
WED JUL 01........ MON JUL 13 
THU JUL 02........ TUE JUL 14 
FRI JUL 03........ TUE JUL 14 
SAT JUL 04........ WED JUL 15 
     CIVIL TRAFFIC 
TUE JUN 30........ THU JUL 30 
WED JUL 01........ FRI JUL 31 
THU JUL 02........ MON AUG 03 
FRI JUL 03........ MON AUG 03 
SAT JUL 04........ TUE AUG 04 

私が行うことができるように必要なもの各見出しの日付の下にリストされている関連した日付を取得しています。私はそれを設定したいので、ユーザーが070109の日付を欲しければ、「Todays Court Dates」のボタンを選択するだけです。彼らが別の日付の裁判所の日付を必要とする場合、彼らは彼らが望む日付を入力し、テキストファイルは "1 $日付"と関連情報が検索され、表示される検索されるだろう。私の問題があります...

私はファイルを読み込んでファイル全体を表示することもできましたが、 "1 070109"の位置を特定し、次の12行だけの情報を表示する方法を見つけられませんでした。

+0

SQLデータベースが使いやすくなる可能性があります。 o.o – Tanoro

+0

データベースに感謝しています。 – Jacob

+0

例に基づいて、二重改行に基づいて検索できるように見えます。それは働くだろうか? –

答えて

0

各日付に12のエントリがあると確信できたら、単純なループを使って12回のfgetsとarray_pushを実行できます。その結果、12個の文字列が配列されます。

+0

とそれ以前には、fgetsを使用して目標の日付に到達します。もちろんデータベースほど効率的ではありません – Jeremy

+0

はい、私は各日付の12のエントリーを確信しています。 –

0

テキストファイルを使用する場合は、最初にfopen()してからfseek()を実行して、必要な場所にファイルポインタを配置する必要があります。すべての行が同じ場合、すべての行(FRI JUL 03 ........ MON AUG 03など)は30バイト長です。また、各行のセット(1 070109)の「ヘッダー」は8バイト長であることもわかります。

最初のヘッダーをスキップする場合は、fseek($ file、8)+ eol(CRまたはCRLFを使用するかどうかによって1または2バイト増やす)が必要です。 crlf(1バイト)の代わりにcrを使用しているとしましょう。ヘッダーは9バイト長くなります。

あなたが1つのヘッダーと12行の "記録" を持って知っていれば、あなたはスキップすることができます:

  • 9ヘッダのバイト+ EOL
  • 30 * 12 + 30(12行をそう..に

)各ラインのEOLを+あなたは、あなたがその日のために正しい情報を持つことになりますと仮定します日付を取得するために好きなようにあなたに多くのレコードをスキップすることができます。ヘッダー+行+ eolをあなたが望むところまでfseekする機能を作ってください。

2レコードまたは5レコードをスキップすることができます。各レコードは日付を表します。

関連する問題