Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » Пагинация - или деление по приблизительному количеству символов
Страницы (2): [1] 2 »
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
Red face Пагинация - или деление по приблизительному количеству символов [сообщение #41390]

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

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

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 10:40
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Stdin
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Aug 2002
Место проживания: Питер
Публикаций: 69
Статус: Stdin в оф-лайне
[сообщение #41398]

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

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 11:37
Нажмите сюда для просмотра профайла Stdin Отправить Персональное сообщение Stdin Посетить домашнию страничку Stdin! Найти сообщения от Stdin Добавить Stdin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #41414]

А функции какие можешь посоветовать, как с трудом себе это представляю. Если поможешь, помогу и я. Я то дизайнер, куча добра всякого, это все, что я могу. Са-то это написать не смогу, надо будет другому обяснить, что и примерно как должно быть. Согласен?

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 15:03
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Stdin
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Aug 2002
Место проживания: Питер
Публикаций: 69
Статус: Stdin в оф-лайне
[сообщение #41416]

Функции все стандартные,
split() - для разделения
strlen() - для подсчета количества символов в строке.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 15:15
Нажмите сюда для просмотра профайла Stdin Отправить Персональное сообщение Stdin Посетить домашнию страничку Stdin! Найти сообщения от Stdin Добавить Stdin в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #41419]

$strVar{$offset}

substr()

while(){
}

???

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 15:56
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Rumata
Участник+
Средний рейтинг: 4.5 | Оценок: 12
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2002
Место проживания: Владимирская обл.|Москва
Публикаций: 165
Статус: Rumata в оф-лайне
[сообщение #41440]

Хмм. Ð_то ведь пхп, имхо $strVar{$offset} выглядит немного странно ..

Хорошо. Допустим у тебя в $str лежит весь текст целиком. Нужно выдрать первый 1500 знаков с учетом предложений (если то же нужно сделать не получая весь текст в переменную - это немного другой разговор).

Посмотри на код - он делает то, что тебе надо только для 50 символов, а не 1500. Думаю преобразовать его не проблема =))

PHP:


$str 
= "bla bla nla. asdfasd. fdsfd fafsasf. asasdwe fdscz asdvc. afasffas. afafs vcxrqw cvea.";
$arr = explode('.',$str);
$c = count($arr);
$k = 0;
$str = "";
for (
$i=0;$i<$c;$i++){
  if (
$k < 50)
    
$str .= $arr[$i].".";
  
$k += strlen($arr[$i]);
}
print 
$str;

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-04-2003 19:31
Нажмите сюда для просмотра профайла Rumata Отправить Персональное сообщение Rumata Посетить домашнию страничку Rumata! Найти сообщения от Rumata Добавить Rumata в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #41516]

Попробую.
Мне надо тип чтобы я в text area загрузил текст, а он сам его забил бы по этим страницам. Ð_то что-то уже другое? То-есть можно и не хранить в переменную, мне главное, что бы это работало быстро.

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-04-2003 09:09
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Rumata
Участник+
Средний рейтинг: 4.5 | Оценок: 12
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2002
Место проживания: Владимирская обл.|Москва
Публикаций: 165
Статус: Rumata в оф-лайне
[сообщение #41522]

quote:
Первоначальное сообщение от Tagore
Попробую.
Мне надо тип чтобы я в text area загрузил текст, а он сам его забил бы по этим страницам. Ð_то что-то уже другое? То-есть можно и не хранить в переменную, мне главное, что бы это работало быстро.

погоди, что-то я не очень понял чего же ты зочешь. Твой пример у меня не открывается, так что объясни четко словами, что и с чем должен делать скрипт. Желательно еще и для чего.

Тот код, что я тебе написал, берет первые 1500 символов из текста и выводит их с учетом предложений. Такое например можно использовать для предпросмотра неких текстов. А что нужно тебе?

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-04-2003 11:14
Нажмите сюда для просмотра профайла Rumata Отправить Персональное сообщение Rumata Посетить домашнию страничку Rumata! Найти сообщения от Rumata Добавить Rumata в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #41531]

Скорее всего ему нужно это использовать для статей. Чтобы скрипт автоматом создавал разные страницы. Думаю твой пример подходит для этого немного его переделав например засунув в функцию и передавть туда текст и оффсет например номер страницы и функия бы возвращяла нужный отрывок.
1. Ð_азбиваем текст на массив, каждый элемент которого будет содержать отрывок текста.
2. Возвращяем $massiv[$offset].

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-04-2003 13:50
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Rumata
Участник+
Средний рейтинг: 4.5 | Оценок: 12
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2002
Место проживания: Владимирская обл.|Москва
Публикаций: 165
Статус: Rumata в оф-лайне
[сообщение #41534]

Тогда получается что-то в этом роде (через $str возвращается массив "страниц"):
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);

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-04-2003 14:14
Нажмите сюда для просмотра профайла Rumata Отправить Персональное сообщение Rumata Посетить домашнию страничку Rumata! Найти сообщения от Rumata Добавить Rumata в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
peteK
Участник+

Зарегистрирован: Aug 2002
Место проживания: Новосибирск
Публикаций: 67
Статус: peteK в оф-лайне
[сообщение #41579]

как вам такая функция, возврашающая страницы текста $TEXT, в котором минимум $chars_per_page.

PHP:


function DivideToPages($TEXT,$chars_per_page = 1500) {
    
$pages = array();
  
$page_no = 0;
    while (
$TEXT!='') {
     
$pages[$page_no] = substr($TEXT,0,$chars_per_page);
     
$TEXT = substr($TEXT,$chars_per_page);
     while ((
$pages[$page_no][strlen($pages[$page_no])-1]!='.')&&($TEXT!='')) {
         
$pages[$page_no] .= $TEXT[0];
         
$TEXT = substr($TEXT,1);
     }
     
$page_no++;
    }
    return 
$pages;    
}



peteK добавил 21-04-2003 в 08:59:55:
попытка соптимизировать. цикл while до точки убрал - если длинные предложения в тексте будут - будет не оч. хорошо работать предыдущий вариант. Хотя конечно не факт что функция pos намного быстрее будет работать. Кто что думает?


PHP:

function DivideToPages($TEXT,$chars_per_page = 1500) {
    
$pages = array();
  
$page_no = 0;
    while (
$TEXT!='') {
     
$pages[$page_no] = substr($TEXT,0,$chars_per_page);
     
$TEXT = substr($TEXT,$chars_per_page);
     if (
$TEXT!='') {
         
$pos = strpos($TEXT,'.');
         if (!(
$pos === false)) {
          
$pages[$page_no] .= substr($TEXT,0,$pos+1);
          
$TEXT = substr($TEXT,$pos+1);
         }
     }
     
$page_no++;
    }
    return 
$pages;    
}

__________________
**censored**
Web Site Design and Development

Сообщение было отредактировано peteK 21-04-2003 в 08:48

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-04-2003 08:46
Нажмите сюда для просмотра профайла peteK Отправить Персональное сообщение peteK Посетить домашнию страничку peteK! Найти сообщения от peteK Добавить peteK в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Rumata
Участник+
Средний рейтинг: 4.5 | Оценок: 12
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2002
Место проживания: Владимирская обл.|Москва
Публикаций: 165
Статус: Rumata в оф-лайне
[сообщение #41605]

Насчет длинных предложений - можно использовать strrpos и сокращать объем текста, а не увеличивать его. Имхо pos лучше, чем while.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-04-2003 14:27
Нажмите сюда для просмотра профайла Rumata Отправить Персональное сообщение Rumata Посетить домашнию страничку Rumata! Найти сообщения от Rumata Добавить Rumata в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #41635]

единственное замечание по всему этомоу, имхо нужно использовать для поиска точку и пробел, именно так заканчивается предложение а не просто точку, так как под раздачу может попасть строка содержащяя script.php или domain.com.

polo добавил 21-04-2003 в 19:22:22:
Даже было бы логичнее использовать проверку как точка пробел и заглавная буква, тогда ошибки правктически исключены.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-04-2003 19:21
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
peteK
Участник+

Зарегистрирован: Aug 2002
Место проживания: Новосибирск
Публикаций: 67
Статус: peteK в оф-лайне
[сообщение #41641]

да точка+пробел это правильнее. У меня как раз урл'ы резались на стыке страниц.

но не совсем правильно как я убедился на своих задачах. Ð_то проверка не пропускает конец абзаца! Т.е. если предложение последнее в абзаце, ф-я будет прибавлять к тексту первое предложение следующей страницы.

а вообще как раз логичнее (это конечно мое мнение - и относится оно большей частью к моему текущему проекту) разбивать текст на страницы по абзацам, т.е. 1500 символов + текст до конца абзаца.

но вот не могу пока придумать как это сделать.

strpos($TEXT,".\n") - не работает..

__________________
**censored**
Web Site Design and Development

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-04-2003 20:02
Нажмите сюда для просмотра профайла peteK Отправить Персональное сообщение peteK Посетить домашнию страничку peteK! Найти сообщения от peteK Добавить peteK в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
Exclamation пхпклуб.нет [сообщение #41669]

polo
RomikChef говорит что:
echo substr($str,$_GET['pos'],strpos($str,".",$_GET['pos']+1500));

Ð_то как?

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 22-04-2003 08:59
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя

Страницы (2): [1] 2 »


Формат времени GMT. Текущее время 11:52.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.83834910 seconds (99.29% PHP - 0.71% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.