PHP. TXT поиск файла с отображением соответствующей информации поиска - PullRequest
0 голосов
/ 26 июля 2011

У меня есть текстовый файл, который содержит даты в годах с соответствующими датами. Я работаю с файлом 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 голосов
/ 26 июля 2011

Если вы хотите использовать текстовый файл, сначала вам нужно будет выполнить 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 байтheader + eol
  • 30 * 12 + 30 (12 строк + eol для каждой строки)

и т. д.

Вы можете пропустить столько записейкак вы хотите, чтобы добраться до даты, когда вы предполагаете, что у вас будет правильная информация для этой даты.просто сделайте функцию для поиска заголовка + строк + eol до точки, где вы хотите.

, чтобы вы могли пропустить 2 записи или 5 записей, каждая запись представляет дату

0 голосов
/ 26 июля 2011

, если вы уверены, что на каждую дату есть 12 записей, я думаю, вы можете просто использовать простой цикл для выполнения 12 раз fgets и array_push.В результате у вас будет массив из 12 строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...