| |
|
|
| | Вот этим оператором
$pages=explode("----##----", chunk_split($text, $nznak, "----##----"));
через каждые $nznak в текст вставляется служебное слово ----##---- , а потом посредством оператора
$pages[$nomer];
при увеличении $nomer от нуля до некоей величины можно считывать текст частями по $nznak знаков. И все было бы хорошо, но при таком жестком делении текста на фрагменты фиксированного размера рвутся слова, что несколько некрасиво.
Поэтому хотелось бы чуть изменить алгоритм. Например, так:
1. Подсчитать количество слов в тексте, считая словом каждый знак или группу знаков, отделенных одним или несколькими пробелами.
Есть ли в РНР4 такая функция
$nslov = F($text) ; ??
Если непосредственно этой функции нет, то можно, как крайняя мера, удалить из текста все следующие подряд пробелы, оставив только один, и подсчитать число $nprob пробелов – а слов в этом случае будет на одно больше. Для этой цели в РНР4 есть подходящий оператор?
2. Выводить из текста информацию партией по $nslov в зависимости от той же переменной $nomer
$part = Ф($nslov, $text) ;
Если это невозможно или чрезвычайно трудно, то мне придется остановиться на использовании того оператора, что приведен в самом верху.
Или все же можно сделать вывод более оптимально? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(20.11.2006 в 13:45)
| | | Можно выводить фиксированное количество слов. Маловероятно, чтобы на одной странице были только длинные слова, а на другой - только короткие.
<?
$words_at_page=200; //слов на странице
$page=intval($_GET['page']);
$text=file_get_contents("book.txt");
$words=explode(" ", $text);
$start=$page*$words_at_page;
for ($i=$start; $i<=$start+$words_at_page; $i++)
{
$new_text.=$words[$i]." ";
}
echo $new_text;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Loki
(20.11.2006 в 14:06)
| | | Выводить по одному слову и убрать из текста все многократные пробелы? Это круто! Ни за что не додумался бы! Красивый прием! Большое спасибо! | |
| |
|
|