|
|
|
| Есть длинный текст. Нужно разбивать его на страницы примерно по 500 символов. Но так, чтобы текст резался не по символам, а по границам слов. Подскажите, как это лучше реализовать | |
|
|
|
|
|
|
|
для: User
(31.05.2007 в 21:06)
| | Как имено это сделать, надо думать... Но я бы делал через РЕКУРСИЮ. Например так:
Смотрим чем заканчиваются 500 символов, если точкой (запятой, пробелом и т.д.), то поставить разделитель (то есть, создаём вторую страницу), если же нет, то увеличивает на 1 символ (то есть уже 501) и опять смотрим, если следующий символ опять не точка (пробел, запятая и т.д.), то опять увеличиваем на единицу (502). Ну и т.д. | |
|
|
|
|
|
|
|
для: DEM
(31.05.2007 в 21:27)
| | а рекурсия зачем? | |
|
|
|
|
|
|
|
для: DEM
(31.05.2007 в 21:27)
| | Дем, так как вы предлагаете длинный код получится... Я думал сделать примерно так:
<?php
$page=intval($_GET['page']);//номер страницы
$kolvo=500;
$start=$page*$kolvo;
$len=$kolvo+20;
$text=substr($content,$start,$len);
ereg("([^ ] ){1,500}", $text, $array);
$text=$array[1];
?>
|
Возможно ли сделать проще и чтоб быстрее работало? | |
|
|
|
|
|
|
|
для: User
(31.05.2007 в 21:06)
| | Вариант 1
<?php
$page1 = wordwrap($longstr, 500, "~");
$page1 = substr($page1, 0, strpos($page1, "~"));
echo $page1;
?>
|
Вариант 2
<?php
$page1 = preg_replace("/^(.{500,})\W.*/U", "\\1", $longstr);
?>
|
| |
|
|
|