Я хотел бы прочитать строки от 51 до 100 в текстовом файле с использованием PHP.
Текстовый файл содержит менее 500 строк в любой момент времени.
Я хочу читать строки от 51 до 100. Других строк нет.
Я надеюсь, вы понимаете вопрос. Я использовал так много раз и люблю это. Просто не могу найти ответ на этот вопрос нигде.
Любая помощь будет оценена. Заранее спасибо.
использование 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>');
Просто разместите еще один пример, основанный на примере Гильерма:
После тестирования кода Гильерма на моем ящике я обнаружил, что в нем были ошибки, связанные с использованием 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 />"
или что угодно, в зависимости от того, где вы будете отображать результат.