Попытка получить определенную строку из файла. Программа пропускает строки. (PHP) - PullRequest
1 голос
/ 22 ноября 2010

У меня небольшая проблема. Мне нужно получить строку из текстового файла с использованием PHP. Вот пример текстового файла:

привет 2010-10-25
привет 2010-10-26
привет 2010-10-27
привет 2010-10-28
привет 2010-10-29
привет 2010-10-30
привет 2010-10-31

И мой код для вывода строки, содержащей «2010-10-26», таков:

<?php
 $datefile = fopen('file.txt', 'r') or exit("Unable to open file.txt");

 while(!feof($datefile))
 {
  $date = "2010-10-26";
  $string = fgets($datefile);
  if(strpos($string, $date)==true)
  {
   echo fgets($datefile);
  }

 }
 fclose($datefile);
?>

Вместо того, чтобы распечатывать строку "привет 2010-10-26", она печатает "привет 2010-10-27" Я не знаю, что происходит, пожалуйста, помогите.

Ответы [ 3 ]

5 голосов
/ 22 ноября 2010

При поиске строки вы читаете следующую строку и возвращаете ее.

echo fgets($datefile);

Вместо этого вы хотите вернуть текущую строку

echo $string;
0 голосов
/ 22 ноября 2010

Подсказка: Гораздо проще использовать file() для чтения строк файла в массив.

Пример:

$date = '2010-10-26';
foreach (file('file.txt') as $line) {
    if ($line == $date) {
        echo 'Match: '.$line;
        break;
    }
}

Или еще короче:

$date = '2010-10-26';
$lines = file('file.txt');

if (in_array('hello '.$date, $lines)) {
    echo 'Match '.$date;
}
0 голосов
/ 22 ноября 2010

Ну, как сказал kingCrunch вместо использования

echo fgets($datefile);

использование

echo $string;

или если вы все еще хотите использовать то, что использовали, установите для переменной даты день, который меньше того, что вы хотите получить.

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