国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP長文章分頁的示例

2024-05-04 23:07:00
字體:
來源:轉載
供稿:網友

文章分頁通常是文章內容過長為了方便閱讀而做的一個小處理了,下面我們來一起看一篇關于使用PHP將長文章分頁的例子,具體細節如下所示。

當文章內容特長時,為了方便閱讀和頁面展示我們一般將內容分頁來顯示。而一般分頁處理是在后臺發布文章的時候就將提交的內容生成多個分頁后的靜態文件。本文我們結合實例來講解采用PHP動態將長文章內容進行分頁處理。

手動分頁:一般在編輯內容時加入特殊分頁標記,如{pages},提交后,PHP程序會根據分頁符處理分頁,生成不同的靜態頁面。這種分頁方法分頁準確,但是需要人工手動添加分頁符,工作量大。

自動分頁:PHP程序會根據設置好的分頁符將內容進行分頁,然后生成不同的靜態頁面。該方法效率高,對處理不同的html代碼標簽要求高。

前端JS分頁:使用Javascript將長文章內容截取分段,根據請求展示不同的分段內容,達到分頁效果。這種方法一次將內容讀取,由前端js處理分頁,體驗好。

本文實例代碼講解的是采用PHP將長文章內容分頁,可以自動和手動分頁。至于生成靜態html頁面不在本文講解范圍內,后面我們會專門講解生成靜態方面的文章介紹。

分頁類:

  1. <?php      
  2. /*    
  3. *  長文章分頁類       
  4. */    
  5.     class cutpage{      
  6.         private $pagestr;       //被切分的內容      
  7.         private $pagearr;       //被切分文字的數組格式      
  8.         private $sum_word;      //總字數(UTF-8格式的中文字符也包括)      
  9.         private $sum_page;      //總頁數      
  10.         private $page_word;     //一頁多少字      
  11.         private $cut_tag;       //自動分頁符      
  12.         private $cut_custom;    //手動分頁符      
  13.         private $ipage;         //當前切分的頁數,第幾頁      
  14.         private $url;      
  15.           
  16.         function __construct($pagestr,$page_word=1000){      
  17.             $this->page_word = $page_word;      
  18.             $this->cut_tag = array("</table>""</div>""</p>""<br/>""”。""。"".""!""……""?"",");      
  19.             $this->cut_custom = "{nextpage}";      
  20.             $tmp_page = intval(trim($_GET["ipage"]));      
  21.             $this->ipage = $tmp_page>1?$tmp_page:1;   
  22.             $this->pagestr = $pagestr;  
  23.         }      
  24.           
  25.         function cut_str(){      
  26.             $str_len_word = strlen($this->pagestr);     //獲取使用strlen得到的字符總數      
  27.             $i = 0;      
  28.             if ($str_len_word<=$this->page_word){   //如果總字數小于一頁顯示字數      
  29.                 $page_arr[$i] = $this->pagestr;      
  30.             }else{      
  31.                 if (strpos($this->pagestr, $this->cut_custom)){      
  32.                     $page_arr = explode($this->cut_custom, $this->pagestr);      
  33.                 }else{      
  34.                     $str_first = substr($this->pagestr, 0, $this->page_word);   //0-page_word個文字    cutStr為func.global中的函數      
  35.                     foreach ($this->cut_tag as $v){      
  36.                         $cut_start = strrpos($str_first$v);       //逆向查找第一個分頁符的位置      
  37.                         if ($cut_start){      
  38.                             $page_arr[$i++] = substr($this->pagestr, 0, $cut_start).$v;     
  39.                             $cut_start = $cut_start + strlen($v);      
  40.                             break;      
  41.                         }      
  42.                     }      
  43.                     if (($cut_start+$this->page_word)>=$str_len_word){  //如果超過總字數      
  44.                         $page_arr[$i++] = substr($this->pagestr, $cut_start$this->page_word);      
  45.                     }else{      
  46.                         while (($cut_start+$this->page_word)<$str_len_word){      
  47.                             foreach ($this->cut_tag as $v){      
  48.                                 $str_tmp = substr($this->pagestr, $cut_start$this->page_word);        //取第cut_start個字后的page_word個字符      
  49.                                 $cut_tmp = strrpos($str_tmp$v);       //找出從第cut_start個字之后,page_word個字之間,逆向查找第一個分頁符的位置      
  50.                                 if ($cut_tmp){      
  51.                                     $page_arr[$i++] = substr($str_tmp, 0, $cut_tmp).$v;     
  52.                                     $cut_start = $cut_start + $cut_tmp + strlen($v);      
  53.                                     break;      
  54.                                 }      
  55.                             }        
  56.                         }      
  57.                         if (($cut_start+$this->page_word)>$str_len_word){      
  58.                             $page_arr[$i++] = substr($this->pagestr, $cut_start$this->page_word);      
  59.                         }      
  60.                     }      
  61.                 }      
  62.             }      
  63.             $this->sum_page = count($page_arr);     //總頁數      
  64.             $this->pagearr = $page_arr;    
  65.             return $page_arr;  
  66.         }      
  67.         //顯示上一條,下一條      
  68.         function pagenav(){      
  69.             $this->set_url();      
  70.             $str = '';  
  71.               
  72.             //$str .= $this->ipage.'/'.$this->sum_page;  
  73.               
  74.             for($i=1;$i<=$this->sum_page;$i++){  
  75.                 if($i==$this->ipage) {  
  76.                     $str.= "<a href='#' class='cur'>".$i."</a> ";  
  77.                 }else{  
  78.                     $str.= "<a href='".$this->url.$i."'>".$i."</a> ";  
  79.                 }  
  80.             }  
  81.               
  82.                      
  83.             return $str;      
  84.         }      
  85.             
  86.         function set_url(){      
  87.             parse_str($_SERVER["QUERY_STRING"], $arr_url);      
  88.             unset($arr_url["ipage"]);      
  89.             if (emptyempty($arr_url)){      
  90.                 $str = "ipage=";      
  91.             }else//Vevb.com 
  92.                 $str = http_build_query($arr_url)."&ipage=";      
  93.             }      
  94.             $this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$str;     
  95.         }      
  96.     }      
  97. ?> 

以上cutpage類可以非常好的處理內容分頁,能處理不同html標簽給分頁帶來的麻煩。如果內容設置了分頁符{nextpage},則會優先自動將內容按分頁符分頁。

調用分頁類:

我們假設讀取了文件text.txt的文章內容,實際項目中應該是表單提交長內容或者讀取數據庫相關表的內容。然后實例化分頁類,然后根據當前頁調用對應分頁的內容并輸出,以及輸出分頁條。

  1. <?php  
  2. $content = file_get_contents('text.txt');      
  3.     $ipage = $_GET["ipage"]? intval($_GET["ipage"]):1;      
  4.     $CP = new cutpage($content);      
  5.     $page = $CP->cut_str();    
  6.     echo $page[$ipage-1];     
  7.     echo $CP->pagenav();  
  8. ?> 

值得注意的是,使用統一UTF-8的文件編碼,會讓你的編碼工作更加順暢.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏邑县| 南平市| 浏阳市| 白山市| 舞阳县| 尼玛县| 南川市| 明水县| 白银市| 晋江市| 积石山| 安远县| 垣曲县| 黄冈市| 囊谦县| 根河市| 遂平县| 霍林郭勒市| 伊金霍洛旗| 马尔康县| 宁河县| 城市| 东乌珠穆沁旗| 三都| 左权县| 天峨县| 分宜县| 玉环县| 塔城市| 麻城市| 博湖县| 洪江市| 建水县| 垦利县| 安西县| 凤冈县| 万山特区| 盐山县| 肃南| 鄂州市| 青田县|