【问题标题】:PHP .txt file search w/display of related search infoPHP .txt 文件搜索 w/显示相关搜索信息
【发布时间】:2013-02-11 17:36:40
【问题描述】:

我有一个文本文件,其中包含多年的日期以及相关日期。我正在使用 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行信息

【问题讨论】:

  • SQL 数据库可能更易于使用。 o.o
  • 感谢上帝的数据库。
  • 看起来您可以根据示例基于双换行符进行搜索。这行得通吗?
  • 是的,有双新行。在这一点上,我对任何和所有解决方案都持开放态度。

标签: php text


【解决方案1】:

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

【讨论】:

  • 在此之前,您使用 fgets 到达目标日期。它当然不如数据库高效
  • 是的,我确定每个日期都有 12 个条目。
【解决方案2】:

如果你想使用一个文本文件,你必须先 fopen() 它,然后你可以做一个 fseek(),找到你需要的文件指针。即:如果所有行都相同,那么每一行(如 FRI JUL 03........ MON AUG 03)都是 30 字节长。您还知道每组行 (1 070109) 的“标题”长度为 8 个字节。

如果您想跳过第一个标头,您需要 fseek($file, 8) + eol(根据您使用的是 CR 还是 CRLF 多 1 或 2 个字节)。因此,假设您使用的是 cr 而不是 crlf(1 字节)。这将使标头长 9 个字节。

如果你知道你有 1 个标题和 12 行的“记录”,那么你可以跳过:

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

等等..

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

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2017-04-13
    • 1970-01-01
    • 2012-12-21
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多