@gabalugi90
Все нормально

Как с помощью php читать из файла txt только вторую строку?

$show_info = fopen('events/kp1/dungeon1.txt', 'r');
	echo fgets($show_info);
	fclose($show_info);

всем привет, есть этот код, он из файла txt читает только первую строку , если "echo fgets($show_info);" написать два раза, то он будет показывать и первую строку и вторую, как сделать чтобы только вторую строку показывал скрипт?
  • Вопрос задан
  • 5743 просмотра
Пригласить эксперта
Ответы на вопрос 5
GeneMoss
@GeneMoss
void
Лучше всего использовать для этого следующий метод:
$file = new SplFileObject('events/kp1/dungeon1.txt');
$file->seek(1); // переходим ко второй строке (нумерация с нуля)
echo $file->current();
Ответ написан
Комментировать
Exomode
@Exomode
Архитектор ПО
$show_info = fopen('events/kp1/dungeon1.txt', 'r');
fgets($show_info);
echo fgets($show_info);
fclose($show_info);

можно ещё сделать как-то так:
function readLine($pathToFile, $index = 0) {
  if (!file_exists($pathToFile)) {
    return null;
  }

  $stream = fopen($pathToFile, 'r');
  $line = null;

  for ($i = 0; $i <= $index; $i++) {
    if ($index > 0) {
      fgets($stream);
    }

    if ($i == $index) {
      $line = fgets($stream);
    }
  }

  fclose($stream);
  return $line;
}

echo readLine('events/kp1/dungeon1.txt', 1);    // Выведет вторую строку файла.

Не будет держать в памяти весь файл, как в предложенных вариантах выше, а значит подойдёт и для массивных файлов.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$show_info = file('events/kp1/dungeon1.txt');
  echo $show_info[1];
Ответ написан
KorniloFF
@KorniloFF
Работаю по font-end / JS
$secondStr= file('events/kp1/dungeon1.txt')[1];

Работает на РНР 7+

А вообще, лучше сохранять весь файл в переменную и использовать любую строку по необходимости:

$file= file('events/kp1/dungeon1.txt');
$secondStr= $file[1];
Ответ написан
oxyberg
@oxyberg
Продуктовый дизайнер ВКонтакте
$show_info = file_get_contents('events/kp1/dungeon1.txt');
$data = explode(PHP_EOL, $show_info);
echo $data[1];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы