imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 22.04.2003, 10:46     # 1
Marchello
Guest
 
Сообщения: n/a

Question Пагинация - или деление по приблизительному количеству символов

Пример на асп: здесь

Это самое надо решить на уровне пхп. Надо, что бы текст из БД или файло брали бы по кускам 250 слов (если такое возможно) или 1500 знаков. Но тогда возникает проблема - надо отставить неразорванные преддожения, как это сделать, хотя бы читсо на уровне теории, если скрипт работает по принципу количества символов?

PHP код:
$str "bla bla nla. asdfasd. fdsfd fafsasf. asasdwe fdscz asdvc. afasffas. afafs vcxrqw cvea."
$arr explode('.',$str); 
$c count($arr); 
$k 0
$j 0
$str = array(""); 
for (
$i=0;$i<$c;$i++) { 
  if (
$k 20) { 
    
$k 0
    
$j++; 
    
$str[$j] = ""
  } 
  
$str[$j] .= $arr[$i]."."
  
$k += strlen($arr[$i]); 

$str[$j] = substr($str[$j],0,-1); 
print_r($str); 
???
 
Старый 22.04.2003, 11:49     # 2
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
гм. мне приходит в голову нечто вроде:
PHP код:
$str "bla bla nla. asdfasd. fdsfd fafsasf. asasdwe fdscz asdvc. afasffas. afafs vcxrqw cvea."
$arr explode('.',$str); 

$pagetext = array();
$char_limit 250;
foreach(
$arr as $sentence
{
    
$i 0;
    if(
strlen($pagetext[$i]) + strlen($sentence) > $char_limit
    {
        
$i++;
    }
    
$pagetext[$i] .= $sentence;
}

foreach(
$pagetext as $page) {
    echo 
$page;

правда это, во первых, лимитирует только по числу букв - не считает количества слов, и во вторых, задохнётся если ему попадётся предложение длиннее лимита страницы (250 букв в этом примере).
Aeon вне форума  
Старый 22.04.2003, 21:45     # 3
Marchello
Guest
 
Сообщения: n/a

Aeon
PHP код:
echo substr($str,$_GET['pos'],strpos($str,". ",$_GET['pos']+1500)); 
А как тебе такое?
 
Старый 22.04.2003, 22:23     # 4
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
класс... только, граница страницы пройдёт не на, скажем, 1500ой букве, а на следующей точке найденной после этой буквы, т.е., если попадётся длинное предложение, вполне может растянуть одну страницу до двух или больше.
Aeon вне форума  
Старый 23.04.2003, 21:17     # 5
Marchello
Guest
 
Сообщения: n/a

final

А вот так?

PHP код:
$str "bla bla nla. asdfasd. fdsfd fafsasf. asasdwe fdscz asdvc. afasffas. afafs vcxrqw cvea."

preg_match_all("/.{15,}?\./s",$str,$out,PREG_PATTERN_ORDER); 
list(
$out) = $out

print_r($out);



for (
$i=0$i<count($out); $i++) { 
$pgnum $i+1
echo 
"<option value=$pgnum>$pgnum</option>"


Последний раз редактировалось Marchello; 24.04.2003 в 21:42.
 
Старый 24.04.2003, 21:42     # 6
Marchello
Guest
 
Сообщения: n/a

Стас, что ты думашь по этому поводу. Аэон - где ты?
 
Старый 25.04.2003, 04:03     # 7
Aeon
::VIP::
 
Аватар для Aeon
 
Регистрация: 28.06.2002
Адрес: neverwhere
Сообщения: 1 166

Aeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собойAeon Имеются все основания чтобы гордиться собой
Marchello
хм, по regex я не эксперт, я бы поспрашивал на irc... по моему правда list($out) = $out; там совершенно не нужно.
Aeon вне форума  
Старый 25.04.2003, 09:25     # 8
Marchello
Guest
 
Сообщения: n/a

Я тоже не эксперт, потому и спросил - может знаешь или как...
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:25.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.