2011-07-26 105 views
0

我有一個文本文件,其中包含與相關日期相關的數年的日期。我從2009年開始使用該文件,但其結構與2011年的文件相同,並將在2012年的文件中。正如你可以看到每個日期部分以1開頭和一個空格,接着MMDDYY格式的日期:PHP .txt文件搜索w /相關搜索信息的顯示

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的日期,他們可以選擇「今日法院日期」按鈕。如果他們需要不同日期的法庭日期,他們將輸入他們想要的日期,文本文件將被搜索「1 $ date」並且相關信息將被檢索並顯示。有我的問題...

我已經能夠讀取文件,甚至diplay整個文件,但我還沒有想出如何找到「1 070109」,然後只顯示以下12行信息

+0

SQL數據庫可能更易於使用。 o.o – Tanoro

+0

感謝上帝提供數據庫。 – Jacob

+0

基於示例,您可以基於雙換行符進行搜索。這會工作嗎? –

回答

0

如果你確定每個日期有12個條目,我想你可以使用一個簡單的循環來做12次fgets和array_push。結果你將有一個12個字符串的數組。

+0

之前,你使用fgets來達到目標​​日期。它當然不如數據庫效率高 – Jeremy

+0

是的,我確信每個日期的12個條目。 –

0

如果你想使用一個文本文件,你必須首先打開它,然後你可以做一個fseek()來找到你需要的文件指針。即:如果所有行都相同,則每行(如FRI JUL 03 ........ MON AUG 03)的長度爲30個字節。您還知道每行(1 070109)的「標題」長度爲8個字節。如果您想跳過第一個標題,您需要fseek($ file,8)+ eol(更多1或2個字節,具體取決於您使用的是CR還是CRLF)。所以我們假設你使用的是cr而不是crlf(1字節)。這會使標題長9個字節。

,如果你知道你有1頭和12行的 「記錄」,那麼你可以跳過:頭+ EOL的

  • 9個字節
  • 30 * 12 + 30(12線+每行的EOL)

的等..

,只要你喜歡去的日期,你會認爲你將擁有該日期的正確信息,您可以跳過許多記錄。只需製作一個函數即可查看標題+行+ eol的位置,直到您想要的位置。

因此您可以跳過2條記錄或5條記錄,每條記錄代表一個日期