Irina88 пишет:Как сделать, чтобы содержимое текстового файла (enter.txt) разбивалось на страницы (по 10 новостей)?
Добрый день, Ирина!
Про страницы по 10 новостей не понятно.
Может быть определить количество строк в файле, которые должны вводится на одной странице, например, 10 строк.
Далее важно учитывать, что файлы могут большими и лучше их читать не целиком,
а читать частями постранично начиная с любой строки.
Допустим, есть файл News.txt
Спойлер (Отобразить)Цитата:МОСКВА, 25 ноября — РИА Новости.
Изолированность и отсутствие широкого разнообразия штаммов способствовали
"самоликвидация" дельта-варианта коронавируса в Японии. Об этом в интервью "Ленте.ру" рассказала
профессор Школы системной биологии американского университета Джорджа Мейсона, главный
научный сотрудник лаборатории функциональной геномики медико-генетического научного центра РАН Анча Баранова.
Баранова также отметила, что исчезновению коронавируса в Японии способствовала не только относительная
изолированность страны в отличие от Европы, но и дисциплинированное отношение граждан к ограничительным мерам.
Вместе с тем генетик считает опасным исчезновение дельта-штамма коронавируса в России по примеру Японии.
Она объяснила это его высоким уровнем инфекционности, которая позволяет сдерживать распространения
других вариантов вируса.
Ранее руководитель команды ученых из Национального института генетики и Университета Ниигаты,
профессор Ицуро Иноуэ сообщил, что циркулирующий в Японии дельта-штамм коронавируса мог накопить
слишком много мутаций в одном из неструктурных белков, что впоследствии могло лишить его способности
"исправляться" и вызвало "самоликвидацию".
Исследователь отметил, что в начале появления варианта дельта в Японии мутации
в нем быстро накапливались, однако затем прекратились. По его словам, большая часть изменений
происходила на участке A394V неструктурного белка nsp14, отвечающего за исправление ошибок
при репликации. В итоге вирус, пытаясь исправить дефекты, потерял способность размножаться.
Необходимо определить количество строк в файле из исходя из того,
что на одной странице должно быть 10 строк, рассчитать количество страниц.
Для реализации этой задачи применён PHP класс
SplFileObject.
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?
function ReadLinesFromFile($StartLine, $nLines, $file){
$EndLine=$StartLine+$nLines;
$line = $StartLine;
$news=[];
while ($line < $EndLine ) {
$file->seek($line-1);
$news[]=$file->current();
$line++;
}
return $news;
}
echo <<<HTML
<html>
<head>
<title>News</title>
</head>
<body>
HTML;
$file = new SplFileObject('News.txt');
$file->seek(PHP_INT_MAX);
$linesTotal = $file->key();
$LineInPage=10;
$Pages = ceil(($linesTotal-1
)/$LineInPage); $page=isset($_GET['page'])?
$_GET['page']:1; $aPage=1;
while($aPage<=$Pages)
{
if($aPage==$page)
echo " $aPage ";
else
echo " <a href='?page=$aPage' >$aPage</a> ";
$aPage++;
}
echo "<hr>";
$StartLine=($page-1)*$LineInPage+1;
$news = ReadLinesFromFile($StartLine, $LineInPage, $file);
foreach ((Array)$news as $line) echo "$line<br>"; echo <<<HTML
</body>
</html>
HTML;
?>