Разбиение на страницы (pagination)

Статус
В этой теме нельзя размещать новые ответы.

D@nil

Постоялец
Регистрация
1 Окт 2006
Сообщения
340
Реакции
122
Зачача: Разбить текст на страницы, с учетом конца предложения.

те выбираем кусок длинной ~2000, доходим до точки, разбиваем.

если у кого есть подобный код скиньте.


вот от друпала кусок:
PHP:
// -- content --
		// explode the body on the <!--pagebreak--> tag
		$pages = explode('<!--pagebreak-->', $content);

		// if more than one page, generate the links on the bottom
		if (count($pages) > 1) {

			// process only if the user doesn't want all the pages
			$pageNo = $_GET['pageNo'];

			$totalPages = count($pages);

			// check we're not too far or too few
			if (!isset($pageNo) || empty($pageNo)) {
				$pageNo = 1;
			}

			if ($pageNo > $totalPages) {
				$pageNo = $totalPages;
			}

			if ($pageNo != 'ALL') {

				$basepage = $_GET['q'];

				for($i = 1; $i <= $totalPages; $i++) {
					if ($pageNo != $i) {
						$links .= l($i, $basepage, array(), 'pageNo=' . $i) . ' ';
					} else {
						$links .= $i . ' ';
					}
				}

				$prev = (($pageNo - 1) < 1) ? 1 : ($pageNo - 1);
				$next = (($pageNo + 1) > $totalPages) ? $totalPages : ($pageNo + 1);

				if ($pageNo > 1) {
					$x = variable_get('pagination_prev', 'previous');
					if ($x != '') {
						$links = l($x, $basepage, array(), 'pageNo=' . $prev . ' ') . ' | ' . $links;
					}
				}

				if ($pageNo < $totalPages) {
					$x = variable_get('pagination_next', 'next');
					if ($x != '') {
						$links .= ' | ' . l($x, $basepage, array(), 'pageNo=' . $next . ' ');
					}
				}

				$content = $pages[($pageNo - 1)] . '<p />' . variable_get('pagination_pre', 'Go to page:') . $links . ' | ' . l(variable_get('pagination_single', 'Single page'), $basepage, array(), 'pageNo=ALL' . ' ');

			} // end check for ALL param

		} // end check for > 1 page to display
Лолько надо разбиение по концу предложения, а не по разделютелю ( <!--pagebreak--> )
 
Тоже интересует данная тема,может у кого есть решение,поделитесь.
 
навскидку, если лимит 2000 символов, то проходиться вперед по кажому символу и сравнивать его с точкой, если нашли - разбиваем, нет - ищем в другую сторону
 
нашел, подобное решение есть в коде WordPress
 
криво но для моих нужд пойдет

пользуемся:
PHP:
$text = '';

$lines = wordwrap($text, 2000, "<!--break-->");
$lines = explode ("<!--break-->", $lines);


$num = count($lines);  // Число записей всего.
$perpage = 7; // Кол-во, показываемых записей на странице.
$pages_count = @ceil($num/$perpage);
$pages = 'Страницы:';
for($j=1;$j<=$pages_count;$j++)
{

	if ($_GET['page'] != $j)
	{
		$pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> ';
	}
	else
	{
		$pages .= ' <b>'.$j.'</b> ';
	}
	echo $pages;
}
2000 - число символов на странице.
 
Я только учусь использовать регулярки, так что не пинайте :)))
 
криво но для моих нужд пойдет

пользуемся:
PHP:
$text = '';

$lines = wordwrap($text, 2000, "<!--break-->");
$lines = explode ("<!--break-->", $lines);


$num = count($lines);  // Число записей всего.
$perpage = 7; // Кол-во, показываемых записей на странице.
$pages_count = @ceil($num/$perpage);
$pages = 'Страницы:';
for($j=1;$j<=$pages_count;$j++)
{

	if ($_GET['page'] != $j)
	{
		$pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> ';
	}
	else
	{
		$pages .= ' <b>'.$j.'</b> ';
	}
	echo $pages;
}
2000 - число символов на странице.

На сколько я понимаю, то это разбиение даже без учета слов.
 
Разбивает с учетом конца слова.
Для просмотра ссылки Войди или Зарегистрируйся

успел хорошенько потестить, корректно работает.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху