Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как разбить большой кусок текста на несколько частей

Ответить
Настройки темы
Как разбить большой кусок текста на несколько частей

Пользователь


Сообщения: 67
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть несколько распознаных книг загнаных в SQL, 1 книга - одна строка в таблице
как привыводе на сайте сделать постаничное разбиение, наример первые 10 kb страница 1, вторые 10 kb страница 2 и т.д.?
или предложите что-либо другое. Цель одна - из 1 огромной страницы сделать много мелких

Отправлено: 11:36, 18-05-2008

 

Старожил


Сообщения: 313
Благодарности: 46

Профиль | Отправить PM | Цитировать


paginator-ов куча есть. Можно классы найти можно в процедурном стиле. Вот например я недавно отсюда взял, просто mysql запросы на свои поменяй

Отправлено: 12:23, 18-05-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 14
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата:
paginator-ов куча есть. Можно классы найти можно в процедурном стиле. Вот например я недавно отсюда взял, просто mysql запросы на свои поменяй
По-моему paginator - это не соовсем то, что нужно. Там идет речь о том, что в таблице очень много строк и надо чтобы выводилось, например, по 20 строк таблицы на одну страницу, на следующей - следующие 20 строк таблицы и т.д. + навигатор этих страниц. Здесь же берется всего только одна строка таблицы, которая содержит целую книгу. И эту одну очень длинную строку, содержащую книгу, надо разбить на несколько страниц. Если я правильно понял задачу, то здесь так просто не получится, надо программку писать, которая грамотно разбивает строку на страницы. Я правильно понял автора темы ?

-------
Лучшие сайты интернета


Отправлено: 11:39, 21-05-2008 | #3


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


chem1
Смотрим на функцию substr. Предположим, в переменной $text - вся книга.
PHP код: Выделить весь код

$max_length 10000;

if(!isset(
$page)){
 
$page 0;
}
$rettext substr($text$page*$max_length$max_length); 

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 12:26, 21-05-2008 | #4


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата Arrest:
Смотрим на функцию substr. Предположим, в переменной $text - вся книга. »
Лучше наверно вызывать SUBSTR() базы данных. В этом случае не надо всю книгу каждый раз тащить

-------
Fortes fortuna adiuvat


Отправлено: 13:17, 21-05-2008 | #5


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


vadimiron
Да, так действительно удобнее :-)
http://www.1keydata.com/sql/sql-substring.html

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 21:53, 21-05-2008 | #6


Новый участник


Сообщения: 14
Благодарности: 4

Профиль | Отправить PM | Цитировать


Использовать
Код: Выделить весь код
$rettext = substr($text, $page*$max_length, $max_length);
- не эффективно, т.к. программа будет разрывать на страницы где попало, посреди слов и т.д., может одну букву остваить на одной странице, а остальную часть слова перенести на другую или наоборт, перенесет последнюю букву на следующу страницу. Словом, будет рвать слова и предложения где вздумается. Можно попробовать такой вариант:
Код: Выделить весь код
$text = 'Первый пример текста. Второй пример текста. Третий пример текста. Четвертый пример текста.';
$max_length = 30;
$page = (isset($_GET['page']) ? $_GET['page'] : 2);
// Разбиваем $text на массив $arr[], находя в тексте пробелы между словами
$text.= ' ';
while (!empty($text)):
  if (strlen($text)>$max_length) $n = $max_length; else $n = strlen($text);
  for ($i = $n-1; $i>0; $i--) if ($text[$i]==' ') break;
  $arr[] = trim(substr($text,0,$i+1)); $text = substr($text,$i+1);
endwhile;
$k = count($arr);
// Выводим на экран текущую страницу
echo 'Страница '.$page.' из '.$k.'<br><br>';
echo $arr[$page-1];
// Теперь рисуем простенький навигатор страниц
$nav = '<a href="?page='.($page>1 ? $page-1 : 1).'">Предыдущая</a> ';
$nav.= '<a href="?page='.($page<$k ? $page+1 : $k).'">Следующая</a>';
echo '<br><br>'.$nav;
// А это для отладки, чтобы было видно, что происходит
echo '<pre>'; print_r($arr);
Здесь программа будет разрывать по пробелам между словами. Хотя и это конечно тоже не предел совершенства.

-------
Лучшие сайты интернета


Отправлено: 18:12, 22-05-2008 | #7


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

<?php

    $maxlen 
10;
    
    
$page = isset($_GET['page'])?$_GET['page']:1;
    
    
$page_beginning $maxlen $page;
    
$page_end $page_beginning $maxlen 50;
    
    
mysql_connect(...);
    
$q mysql_fetch_assoc(mysql_query("SELECT SUBSTR(text, $page_beginning, $page_end) AS txt FROM books WHERE id = 1;");
    
    
$page_text $q['txt'];
    
$page_length $page_end $page_beginning;
    
    
$char $page_text[$page_length-1];
    
$cut_length $page_length 1;
    while(
$char!=" " && ($cut_length $page_len) != 50){
        
$length += 1;
        
$char $page_text[$length];
    }
    
    
$dsp_text substr($page_text$page_beginning$cut_length);
    
    echo 
$dsp_text;

?>

Вот так быстрее, только бы паджинатор еще бы прикрутить....

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Последний раз редактировалось Arrest, 27-05-2008 в 19:48.


Отправлено: 19:59, 22-05-2008 | #8


Старожил


Сообщения: 313
Благодарности: 46

Профиль | Отправить PM | Цитировать


похоже тема всех заинтересовала кроме автора Тогда и я внесу свою лепту. Постарался сделать все с помощью mySQL, почти ничего php. Буду рад критике

PHP код: Выделить весь код

$page = (is_numeric($_GET['page']) ? $_GET['page'] : 1);
    
$pro_page 100;
    
$link mysql_connect('localhost''root''');
    
mysql_select_db ('test'$link);
    
$pos =  ($page>1)?$page $pro_page:1;
    
$sql "select 
            LOCATE(' ', trim(b.text), "
.$pos."+".$pro_page."),    
            if(
                LOCATE(' ', trim(b.text), "
.$pos."+".$pro_page."),
                SUBSTRING(trim(b.text),"
.$pos.",(LOCATE(' ', b.text, ".$pos."+".$pro_page.")-".$pos.")),
                SUBSTRING(trim(b.text),"
.$pos.", LENGTH(b.text) - ".$pro_page.")
            ) as my from book b"
;
    
$result mysql_query ($sql); 
    
$row mysql_fetch_row($result);
    
$pagination = ($page>1)?'<a href="1.php?page='.($page-1).'">< </a> ':'';
    
$pagination .= ($row[0]>0)?'<a href="1.php?page='.($page+1).'> ></a>':'';
    echo 
$row[1];
    echo 
'<br/>';
    echo 
$pagination


Последний раз редактировалось bruder, 23-05-2008 в 15:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:44, 23-05-2008 | #9


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


bruder, извращенец :-) проводим полевые испытания?

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 18:20, 23-05-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как разбить большой кусок текста на несколько частей

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Flash - разбить флэшку на несколько разделов Юzverь Накопители (SSD, HDD, USB Flash) 48 11-11-2015 12:04
Как разбить *.avi файл на 2 и более частей azbest Видео и аудио: обработка и кодирование 10 20-10-2009 15:58
Download Master (архив разбит на несколько частей) Kindmankind Хочу все знать 11 19-03-2009 23:55
Как разрезать файл 700-800 МВ на несколько частей gormark Хочу все знать 6 31-08-2005 07:41
Комп как кусок железа. brademagus Непонятные проблемы с Железом 14 23-12-2002 10:58




 
Переход