PHP .txt文件搜索w /显示相关的搜索信息

时间:2011-07-26 16:13:02

标签: php text

我有一个文本文件,其中包含具有相关日期的多年日期。我正在使用2009年的文件,但其结构在2011年的文件中是相同的,并且将在2012年的文件中。如您所见,每个日期部分以1和空格开头,后跟mmddyy格式的日期:

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”,并检索和显示相关信息。这是我的问题......

我已经能够读取文件,甚至可以显示整个文件,但我还没弄清楚如何找到“1 070109”,然后只显示以下12行信息

2 个答案:

答案 0 :(得分:0)

如果您确定每个日期有12个条目,我认为您可以使用一个简单的循环来执行12次fgets和array_push。因此,您将拥有一个包含12个字符串的数组。

答案 1 :(得分:0)

如果你想使用文本文件,你必须首先fopen(),然后你可以做一个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行的“记录”,那么你可以跳过:

  • 标题的9个字节+ eol
  • 30 * 12 + 30(12行+每行一个eol)

等等..

您可以跳过任意数量的记录,直到您认为您将拥有该日期的正确信息的日期。只需创建一个函数来查找标题+行+ eol到你想要的位置。

所以你可以跳过2条记录或5条记录,每条记录代表一个日期