PHP: разбиение на страницы большого текстового файла - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть текстовый файл на моем веб-сайте, который на самом деле занимает много места по вертикали, и я должен прокрутить его вниз, чтобы прочитать. Я хотел бы разделить его на страницу. Например, каждые 300 символов или также каждые 10 строк создают новую страницу. Это возможно? Спасибо

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Хорошо, посмотрите на каждые 300 символов.

// file path to read the text file
$filePath = "textfile.txt";
// now character per page we need 
$charsPerPage = 300;
// now get the page number after click and default is 1
// taking you are passing the pagenumber in url like ?page-number=?
$pageNumber = isset($_GET["page-number"])?$_GET["page-number"]:1;
// Determine Starting character index and ending character index
// starting character index for first page character index should be 0 and ending character index is 300
$startingIndex = $charsPerpage*($pageNumber-1);
// Now read the text file
$textFile = fopen($filePath, "r") or die("Unable to open file!");
// read all text of text file
$textContent = fread($myfile,filesize($filePath));
// now it's time to fetch page conetent
$pageContent = substr($textContent,$startingIndex,$charsPerPage);
echo $pageContent;
0 голосов
/ 24 сентября 2018

Привет, я пробовал оба решения, но у меня были трудности с адаптацией к моему коду. Во всяком случае, это было не так срочно, я позже попробую ваши решения еще более спокойно. Извините, если я не ответил раньше, но работа до и праздники, заберите меня с компьютера.

0 голосов
/ 03 сентября 2018

Один из способов сделать это - преобразовать текстовый файл из большой строки в массив, а затем нарезать массив, исходя из того, сколько строк вы хотите отобразить

Если мы предположим, что мы отображаем 50 строк за раз, и что скрипт получает страницу через GET:

$linesperpage = 50;
$page = (int) $_GET['page'];

$textfile = '...';
$linescount = 0;
$linescount = substr_count( $textfile , PHP_EOL );

$lines = array();
$lines = explode(PHP_EOL, $textfile);

$linestodisplay = '';

$linestodisplay = implode(PHP_EOL, array_slice($lines, $linesperpage * $page -1, $linesperpage * ($page+1) -1));

echo $linestodisplay;
...