深入分析PHP文章內容分頁_PHP教程

來源:互聯網
上載者:User

深入分析PHP文章內容分頁


文章內容分頁主要有兩個辦法:

辦法一、按字數控制進行分頁

按字數分頁辦法簡單易用,但效果不好。

大致思想:首先、設定每頁能容納的最大字數;然後、計算文章內容的總字數,再由總字數和單頁最大字數計算出出總頁數。這樣整個分頁的準備工作就已經做好了。

具體到每一頁的顯示內容可以通過內容截取來實現。比如:頁容納500字,文章內容有2200字,那麼當頁面傳遞page=2時應該顯示第501至1000之間的內容。

這種辦法簡單,但顯示時可能會遇到麻煩,文章內容通常伴有HTML標籤,進行內容切割時實現HTML標籤的閉合有一定難度,如果這個工作沒做好,那麼分頁後的效果顯然也是不好的。

辦法二、通過分頁符進行分頁

通過分頁符進行分頁比起第一種辦法要更為理想。

大致思想:在編輯文章內容時往內容裡面插入分頁符(如:

),在文章顯示時對文章內容進行分割,每一部分表示一個頁的內容,通過傳遞參數控制顯示第幾頁。

這種辦法比較人性化,畢竟通過人工控制出來的分頁截取的內容更符全我們的思維,而且可以一定程度上避免HTML標籤不閉合的情形。

頁顯示
分頁顯示是將大批量的資料分批發送到用戶端的重要手段之一,通常是將資料庫中的結果集人為的分成一段一段的來顯示。

分類
PHP分頁分為列表分頁和內容分頁,不管是列表分頁還是內容分頁,基本原理是一樣的,將資料分批發送到用戶端。

pager.class.php
這是一個簡單的PHP分頁顯示類,目前支援兩種分頁模式。一種是最簡單的普通分頁模式[首頁] [上頁] [下頁] [尾頁]模式,另一種是經典分頁模式,即:[1][2][3][4][5][6][7][8][9][10][下一頁][尾頁]。

使用方法

代碼如下

require_once 'pager.class.php';
$pager = new pager($totalPage,$currentPage); // $pager對象
echo $pager->showpager(); // 輸出分頁

此分頁顯示類的建構函式
/*
@total_page 總頁數
@current_num 當前頁
@sub_pages 每次顯示的頁數
@subPage_link 每個分頁的連結
@subPage_type 分頁模式

當@subPage_type=1的時候為普通分頁模式
如: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]
當@subPage_type=2的時候為經典分頁樣式
如: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]
*/

代碼如下
pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2)

上述說的PHP分頁的兩種類別(列表分頁和內容分頁),相信列表分頁對大家並不陌生,對於內容分頁,常用的方法是以分頁符的形式(比如:

)將內容分割成多段,求出總頁數,用當前頁碼去擷取分頁顯示列表。

代碼如下

/**
* 樣本:
* * require_once("pager.class.php");
* $subPages=new pager($totalPage,$currentPage);
* echo $subPages->showpager();
* ?>
* */
class pager{

var $each_disNums;//每頁顯示的條目數
var $nums;//總條目數
var $current_page;//當前被選中的頁
var $sub_pages;//每次顯示的頁數
var $pageNums;//總頁數
var $page_array = array();//用來構造分頁的數組
var $subPage_link;//每個分頁的連結
var $subPage_type;//顯示分頁的類型
var $_lang = array(
'index_page' => '首頁',
'pre_page' => '上一頁',
'next_page' => '下一頁',
'last_page' => '尾頁',
'current_page' => '當前頁:',
'total_page' => '總頁數:',
'current_show' => '當前顯示:',
'total_record' => '總記錄數:'
);
/*
__construct是SubPages的建構函式,用來在建立類的時候自動運行.
@total_page 總頁數
@current_num 當前被選中的頁
@sub_pages 每次顯示的頁數
@subPage_link 每個分頁的連結
@subPage_type 顯示分頁的類型

當@subPage_type=1的時候 為普通分頁模式
example: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]
當@subPage_type=2的時候為經典分頁樣式
example: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]
*/
function __construct($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
$this->pager($total_page,$current_page,$sub_pages,$subPage_link,$subPage_type);
}

function pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
if(!$current_page){
$this->current_page=1;
}else{
$this->current_page=intval($current_page);
}
$this->sub_pages=intval($sub_pages);
$this->pageNums=ceil($total_page);
if($subPage_link){
if(strpos($subPage_link,'?page=') === false AND strpos($subPage_link,'&page=') === false){
$subPage_link .= (strpos($subPage_link,'?') === false ? '?' : '&') . 'page=';
}
}
$this->subPage_link=$subPage_link ? $subPage_link : $_SERVER['PHP_SELF'] . '?page=';
$this->subPage_type = $subPage_type;
}

/*
show_SubPages函數用在建構函式裡面。而且用來判斷顯示什麼樣子的分頁
*/
function showpager(){
if($this->subPage_type == 1){
return $this->pagelist1();
}elseif ($this->subPage_type == 2){
return $this->pagelist2();
}
}


/*
用來給建立分頁的數組初始化的函數。
*/
function initArray(){
for($i=0;$i<$this->sub_pages;$i++){
$this->page_array[$i]=$i;
}
return $this->page_array;
}


/*
construct_num_Page該函數使用來構造顯示的條目
即使:[1][2][3][4][5][6][7][8][9][10]
*/
function construct_num_Page(){
if($this->pageNums < $this->sub_pages){
$current_array=array();
for($i=0;$i<$this->pageNums;$i++){
$current_array[$i]=$i+1;
}
}else{
$current_array=$this->initArray();
if($this->current_page <= 3){
for($i=0;$i $current_array[$i]=$i+1;
}
}elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){
for($i=0;$i $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
}
}else{
for($i=0;$i $current_array[$i]=$this->current_page-2+$i;
}
}
}

return $current_array;
}

/*
構造普通模式的分頁
共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]
*/
function pagelist1(){
$subPageCss1Str="";
$subPageCss1Str.= $this->_lang['current_page'] . $this->current_page." / " .$this->pageNums." ";
if($this->current_page > 1){
$firstPageUrl=$this->subPage_link."1";
$prewPageUrl=$this->subPage_link.($this->current_page-1);
$subPageCss1Str.="{$this->_lang['index_page']} ";
$subPageCss1Str.="{$this->_lang['pre_page']} ";
}else {
$subPageCss1Str.="{$this->_lang['index_page']} ";
$subPageCss1Str.="{$this->_lang['pre_page']} ";
}

if($this->current_page < $this->pageNums){
$lastPageUrl=$this->subPage_link.$this->pageNums;
$nextPageUrl=$this->subPage_link.($this->current_page+1);
$subPageCss1Str.=" {$this->_lang['next_page']} ";
$subPageCss1Str.="{$this->_lang['last_page']} ";
}else {
$subPageCss1Str.="{$this->_lang['next_page']} ";
$subPageCss1Str.="{$this->_lang['last_page']} ";
}

return $subPageCss1Str;
}


/*
構造傳統模式的www.111cn.net分頁
當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]
*/
function pagelist2(){
$subPageCss2Str="";
$subPageCss2Str.=$this->_lang['current_page'] . $this->current_page."/" . $this->pageNums." ";

if($this->current_page > 1){
$firstPageUrl=$this->subPage_link."1";
$prewPageUrl=$this->subPage_link.($this->current_page-1);
$subPageCss2Str.="{$this->_lang['index_page']} ";
$subPageCss2Str.="{$this->_lang['pre_page']} ";
}else {
$subPageCss2Str.="{$this->_lang['index_page']} ";
$subPageCss2Str.="{$this->_lang['pre_page']} ";
}

$a=$this->construct_num_Page();
for($i=0;$i $s=$a[$i];
if($s == $this->current_page ){
$subPageCss2Str.="[".$s."]";
}else{
$url=$this->subPage_link.$s;
$subPageCss2Str.="[".$s."]";
}
}

if($this->current_page < $this->pageNums){
$lastPageUrl=$this->subPage_link.$this->pageNums;
$nextPageUrl=$this->subPage_link.($this->current_page+1);
$subPageCss2Str.=" {$this->_lang['next_page']} ";
$subPageCss2Str.="{$this->_lang['last_page']} ";
}else {
$subPageCss2Str.="{$this->_lang['next_page']} ";
$subPageCss2Str.="{$this->_lang['last_page']} ";
}
return $subPageCss2Str;
}


/*
__destruct解構函式,當類不在使用的時候調用,該函數用來釋放資源。
*/
function __destruct(){
unset($each_disNums);
unset($nums);
unset($current_page);
unset($sub_pages);
unset($pageNums);
unset($page_array);
unset($subPage_link);
unset($subPage_type);
}
}
?>

http://www.bkjia.com/PHPjc/834976.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/834976.htmlTechArticle深入分析PHP文章內容分頁 文章內容分頁主要有兩個辦法: 辦法一、按字數控制進行分頁 按字數分頁辦法簡單易用,但效果不好。 大致思想...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.