Автор Тема: Как ограничить длину вывода  (Прочитано 3960 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlexanderLV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webforus.com.ru
Как ограничить длину вывода
« : 05 Марта 2005, 23:10:20 »
На этот раз мне пришлось попотеть не один час, решая эту задачу, но, к сожалению, ничего путёвого не вышло :)

Требуется сделать постраничный вывод текста.

    Цель:  Текст должен быть ограничен $maxkol символов, с сохранением разделения на абзацы.
 
 С нумерацией я и сам разобрался, а вот с УМНЫМ делением страницы пришлось туговато ...

Номер страницы передаётся браузеру через адресную строку.
Мы имеем переменную $text с текстом всей статьи.

План действий такой:

1. Разбиваем текст по параграфам
$par = explode ("((((",  $text);

(((( — любой набор символов перед



2. Ограничиваем кол-во параграфов ($max), учитывая № страницы($page), загоняем результат в $text2
$nom=$page*$max;
for ($i=($page-1)*$max; $i<$nom; $i++){
$text2 =$text2." ".$par["$i"];}

3. Проверяем на кол-во символов
$slova = explode (" ",  $text2);
$ctr=count($slova);
if ($ctr<$maxkol)

4. И увеличиваем $max на 1, если кол-во символов меньше заданного
{$max++;}


5. Как теперь прогнать всё это с новым значением $max с сохранением нового значения, для последующего использования при обращении к «другой странице»?

Я пытался использовать «while», но, скорее всего, у меня маловато опыта (на последней странице происходит зацикливание(при большом $maxkol) + новое значение $max игнорируется при обработке другой страницей):

$maxkol=200;
$ctr=0;
$par = explode ("((((",  $text);
$max=0;
while ($ctr<$maxkol2) {  $max++; $text2=\'\';
$nom=$page*$max;
for ($i=($page-1)*$max; $i<$nom; $i++){
$text2 =$text2." ".$par["$i"];}
$slova = explode (" ",  $text2);
$ctr=count($slova);
}
echo "$text2";
.................


 Читал кое-что про «do» , но возникли проблемы с синтаксисом.

В результате должен получиться текст немного больше заданного, но с сохранением форматирования по абзацам + новая страница должна начинаться с того места, где закончилась предидущая.

 Помогите, пожалуйста, т.к. идея есть, а осуществить её не получается.

 Возможно, кто-то предложит свой вариант решения «Цели» — буду очень благодарен.

WebForUs.com.ru — создай СВОЙ сайт
Ищу желающих разместить свои статьи на моём сайте. Очень выгодные условия подробнее...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как ограничить длину вывода
« Ответ #1 : 06 Марта 2005, 09:21:32 »
я хренею.
чувак, скажи честно - НА СКОЛЬКИ форумах ты нафлудил свой вопрос?
На 20? 100?

Ты не считаешь ли, случайно, что время, потраченное на флуд, лучше было бы потратить на решение своей проблемы самостоятельно?

или тебе своего времени ОЧЕНЬ жалко?
Настолько жалко своего сопливого ламерского времени, что не жалко времени сотен специалистов, которые будут, ничего не зная о том, что тебе давно ответили, тратить время на ответ?

Оффлайн AlexanderLV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webforus.com.ru
Как ограничить длину вывода
« Ответ #2 : 06 Марта 2005, 21:43:56 »
Цитировать
НА СКОЛЬКИ форумах ты нафлудил свой вопрос?


Это кто из нас ещё флудит? Если твой котелок варит только на пререкания и безмозглую болтовню и ты заходишь на форумы чтобы развлечься, и потратить зря время  — я тебе искренне сочувствую, я же написал свой вопрос, чтобы мне помогли решить проблему, ведь я ни один час потратил, ломая голову, как написать этот скрипт, тем более, эта тема будет интересна многим людям, ведь в результате должен получиться очень хороший скрипт, который будет полезен как на домашних страницах, так и на крупных сайтах.

Вопрос я задал на Protoplex.ru, но, к сожалению, никто не смог мне помочь, тогда я решил написать на другие форумы (php5.ru, webscript.ru, phpclub.ru), на мой взгляд, самые лучшие, в надежде, что хоть кто-то мне поможет.

Алгоритм уже выработан, большая часть технической части завершена, осталось только кое-что подредаткировать, но, к сожалению ни у кого, кроме «НА СКОЛЬКИ форумах ты нафлудил свой вопрос?» решимости не хватило! Вот такие вы, МАСТЕРА Рунета! как что — так сразу! А как помочь — от вас месяц не дождёшься! (Возможно я немного погорячился, но в основном так оно и есть) .

Но этот форум не для этого, так что если хотите выразить свои эмоции, напишите мне письмо — разберёмся что к чему.
WebForUs.com.ru — создай СВОЙ сайт
Ищу желающих разместить свои статьи на моём сайте. Очень выгодные условия подробнее...

Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
Как ограничить длину вывода
« Ответ #3 : 09 Марта 2005, 11:00:38 »
AlexanderLV, я за 10 минут нашел то что ты пытаешься сделать битый час! Попробуй воспользоватся гуглом! там есть хороший пример вывода постранично текста!
Вот мой пример того что ты хотишь сделать:

function postr_text($text$n){
$simbol "\\n";
$open "[";
$close "]";
$onpage $n;
$s=$text;
$ar=explode("\\n",$s);
for(
$x=0;$x<count($ar);$x++){
    
$t=count($ar);
    }

if(empty(
$_GET[\'page\'])){$_GET[\'page\'] = 0;}
$begin = $_GET[\'page\'] * $onpage;
$end = $begin + $onpage;
$pages = $t / $onpage;

for($i=$begin;$i<$end;$i++){
if($ar[$i]){$ex = explode($simbol,$ar[$i]);
for($b=0;$b<count($ex);$b++){
	
echo $ex[$b];}
	
echo "
";
	
}
}
?>

<div align="right">Страницы: 
<?
for($p=0;$p<$pages;$p++){
	
$pg = $p+1;
    if($_GET[\'page\']==$p){echo $open.$pg.$close;
    
	
}else{
echo $open."<a href=?page=".$p.">".$pg."</a>".$close;}}
}
Разум когда-нибудь победит

Оффлайн AlexanderLV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webforus.com.ru
Как ограничить длину вывода
« Ответ #4 : 11 Марта 2005, 00:13:41 »
Да, Google действительно помог! Твой вариант подошёл не очень, но этот — ИМЕННО то, что надо(ограничен $pagesize символов, с сохранением разделения на абзацы):

Предположим, что текст статьи у вас "загнан" в переменную $article, а "критический размер" - в $pagesize, тогда для PHP кусок скрипта может выглядеть примерно так:



if (strlen($article) > $pagesize and $_GET[\'page\'] != \'nopages\') {
$page = (isset($_GET[\'page\']) and (int)$_GET[\'page\'] > 0) ? ((int)$_GET[\'page\']) - 1 : 0;
$offset = $pagesize*$page;
$start = ($offset) ? strpos($article, \'<p>\', $offset)+3 : 0;
$end = (strpos($article, \'<p>\', $offset+$pagesize)) ? strpos($article, \'<p>\', $offset+$pagesize) : strlen($article);
if (strlen($article) - $end < $pagesize/2) $end = strlen($article);
$data = substr($article, $start, $end-$start);
if ($page) $pages .= "<a href=\\"/articles.php?id=$artid&page=$page\\">предыдущая страница</a> ";
if ($page or $end < strlen($article)) $pages .= "<a href=\\"/articles.php?id=$artid&page=nopages\\">вывести все ".(round(strlen($article)/1024))." Kb</a> ";
if ($end < strlen($article)) $pages .= "<a href=\\"/articles.php?id=$artid&page=".($page+2)."\\">следующая страница </a>";
$data .= "<p><div align=right>$pages</div>";
} else
$data = $article; 


Спасибо всем за внимание, я думаю тема исчерпана
WebForUs.com.ru — создай СВОЙ сайт
Ищу желающих разместить свои статьи на моём сайте. Очень выгодные условия подробнее...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28