|
|
|
| Здрасвуйте.
Возможно ли решить следующую проблему:
Есть текстовый файл file.txt нужно прочитать из него первые 10 строк и отобразить построчно, потом считать второй 10-к и отобразить, потом третий.
Пробовал найти ответ в книге по php 5, нашёл код
<?
$file_array = file("file.txt");
if(!$file_array)
{
echo("Ошибка открытия файла");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("%s<br>", $file_array[$i]);
}
}
?>
|
но он, вроде, размещает весь текст файла. А можно ли сделать разбивку? Может ввести какието маркеры перед строками, и читать от одного до другого? | |
|
|
|
|
|
|
|
для: sasha
(12.10.2005 в 18:04)
| | Можно так попробовать:
Проверяется если остаток от деления на 10 равен 0 то ставится разделитель десятков
<?
$file_array = file("file.txt");
if(!$file_array)
{
echo("Ошибка открытия файла");
}
else
{
for($i=0; $i < count($file_array); $i++)
{
printf("%s<br>", $file_array[$i]);
if($i%10==0) echo "раздел между 10-ми";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(12.10.2005 в 18:13)
| | В результате получаем:
1 строка
раздел между 10-ми
2 строка
3 строка
4 строка
5 строка
6 строка
7 строка
8 строка
9 строка
10 строка
11 строка
раздел между 10-ми
12 строка
13 строка
14 строка
15 строка
|
А нужно отобразить только первый десяток строк, а второй десяток в другой части страницы, или на другой странице. | |
|
|
|
|
|
|
|
для: Sasha
(12.10.2005 в 19:38)
| | Вам нужно реализовать постраничную навигацию...
Пусть имеется файл text.txt формата
1 Программирование
2 Программирование на PHP
3 Программирование на JavaScript
4 Программирование на ASP.NET
5 Программирование на Java
6 Программирование на Perl
7 Программирование на C++
8 Программирование на Pascal
9 Программирование на Fortran
10 Программирование на Assembler
|
Тогда реализовать постраничную навигацию для него можно при помощи кода
<?php
// Имя файла
$filename = "text.txt";
// Число позиций на странице
$pnumber = 3;
// Открываем файл для чтения
$bufer = file_get_contents($filename);
// Находим все строки при помощи регулярного выражения
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
$bufer,
$out,
PREG_PATTERN_ORDER);
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++)
{
$temp[] = trim($out[2][$i]);
}
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
// Число страниц
$total = count($temp);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$start = (($page - 1)*$pnumber + 1);
$end = $page*$pnumber + 1;
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++)
{
echo $temp[$i]."<br>";
}
// Постраничная навигация
for($i = 1; $i <= $number; $i++)
{
// Если это произвольная страница
if($i != $number)
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
}
}
// Если это последняя страница заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.10.2005 в 20:13)
| | Хеопс супер!! То, что нужно!
Работает всё просто замечательно!
Просто любопытно:
А почему, он не работает без циферок, но при этом ему всё равно какие цифры стоят?
И первой строки тоже нет. | |
|
|
|
|
|
|
|
для: Sasha
(13.10.2005 в 01:09)
| | А ну да и без цифер работает... это просто кусок системы, ориентированной на индексный файл -там другие части зависят от индекса, сортировка и т.п. | |
|
|
|
|
|
|
|
для: cheops
(13.10.2005 в 12:32)
| | Вообще без цифер не работает. Но какие цифры всё равно, хоть все единицы. | |
|
|
|
|
|
|
|
для: Sasha
(12.10.2005 в 19:38)
| | Делаете функцию вывода N-го десятка строк.
for($i=N*10; $i < max(count($file_array),N*10+10; $i++){ echo($file_array[$i].'<br>');}
|
| |
|
|
|
|
|
|
|
для: 12345
(13.10.2005 в 01:25)
| | А если нужно вывести потом второй десяток, а не первый? | |
|
|
|
|
|
|
|
для: Sasha
(13.10.2005 в 10:09)
| | А у меня пишет
"Fatal error: Call to undefined function: file_get_contents() in D:\server\www\news\news.php on line 13"
что я не так делаю? | |
|
|
|
|
|
|
|
для: borolgin
(14.10.2005 в 10:52)
| | Это означает, что у вас версия PHP меньше 4.3 - замените
<?php
$bufer = file_get_contents($filename);
?>
|
на
<?php
$fd = fopen($filename, "w");
$bufer = fread($fd,filesize($filename));
fclose($fd);
?>
|
| |
|
|
|