Чтение определенных строк в текстовом файле с переполнением стека

Я хотел бы прочитать строки от 51 до 100 в текстовом файле с использованием PHP.

Текстовый файл содержит менее 500 строк в любой момент времени.

Я хочу читать строки от 51 до 100. Других строк нет.

Я надеюсь, вы понимаете вопрос. Я использовал так много раз и люблю это. Просто не могу найти ответ на этот вопрос нигде.

Любая помощь будет оценена. Заранее спасибо.

-1

Решение

использование while, fopen а также feof (это хорошо для чтения больших файлов 8)), вот так:

<?php
function retrieveText($file, $init, $end, $sulfix = '')
{
$i = 1;
$output = '';

$handle = fopen($file, 'r');
while (false === feof($handle) && $i <= $end) {
$data = fgets($handle);

if ($i >= $init) {
$output .= $data . $sulfix;
}
$i++;
}
fclose($handle);

return $output;
}

Пример использования этой функции для получения строк с 51 по 100:

echo retrieveText('myfile.txt', 51, 100);

Добавить строку разрыва:

echo retrieveText('myfile.txt', 51, 100, PHP_EOL);

Добавить строку разрыва в HTML:

echo retrieveText('myfile.txt', 51, 100, '<br>');
1

Другие решения

Просто разместите еще один пример, основанный на примере Гильерма:

После тестирования кода Гильерма на моем ящике я обнаружил, что в нем были ошибки, связанные с использованием feof() хотя его код должен работать (логика логична), он ломается.

Следующий метод (используется так же, как и его), должен быть рабочей заменой.

function retrieveText($file, $min, $max)
{
$output = Array();

$line = -1;
$handle = fopen($file, 'r');
while(!feof($handle)) {
$line++;
if(($line >= $min && $line <= $max)) {
$output[] = fgets($handle);
} elseif($line > $max) {
break;
} else {
fgets($handle);
}
}
fclose($handle);
return implode("\n", $output);
}

Обратите внимание, что для разделения каждой строки используется возврат каретки "\n", который вы можете изменить "<br />" или что угодно, в зависимости от того, где вы будете отображать результат.

1

По вопросам рекламы [email protected]