实现长文章分页的PHP示例代码(带源代码)
当文章内容较长时,为了更好地满足用户体验,我们将文章内容分页面显示,而一般的页面处理是在后台发布文章时,将提交的内容生成多个分页的静态文件。本文通过实例,用php对长文章进行动态分页。
查看效果演示源代码下载。
如何分页
手动分页:一般在编辑内容时会添加{pages}等特殊分页标记。提交后,PHP程序会根据分页符进行分页处理,生成不同的静态页面。这种分页方式比较准确,但是需要手动添加分页符,需要大量的工作。
自动分页:PHP程序会根据设置的分页符对内容进行分页,然后生成不同的静态页面。该方法效率高,对处理不同的html代码标签要求高。
前端分页:使用Javascript对长文内容进行拦截和分段,并根据请求显示不同的分段内容,从而达到分页效果。这个方法一次读取内容,前端js处理分页,体验很好。
本文的示例代码解释了PHP用于分页长文章,可以自动和手动分页。至于生成静态html页面,这超出了本文的范围。后面我们会具体讲解生成静态页面的文章介绍。
分页类
?php /* *长文章分页类*/class剪切页面{ private $ page str//被切分的内容private $ pagearr/被切分文字的数组格式private $ sum _ word//总字数(UTF-8格式的中文字符也包括)private $ sum _ page//总页数private $ page _ word//一页多少字private $ cut _ tag//自动分页符private $ cut _ custom//手动分页符private $ ipage//当前切分的页数,第几页私有$ URL function _ construct($ page str,$ page _ word=1000){ $ this-page _ word=$ page _ word;$this-cut_tag=array('/table ','/div ','/p ',' br/',' ', '。', '.', '!', '……', '?', ',');$ this-cut _ custom=“{下一页}”;$ tmp _ page=int val(trim($ _ GET[' IP age ']);$this-ipage=$tmp_page1?$ tmp _ page :1 $ this-page str=$ page str;} function cut _ str(){ $ str _ len _ word=strlen($ this-page str);//获取使用字符长度(字符串长度)得到的字符总数$ I=0;if($ str _ len _ word=$ this-page _ word){//如果总字数小于一页显示字数$ page _ arr[$ I]=$ this-page字符串;}else{ if (strpos($this-pagestr,$ this-cut _ custom)){ $ page _ arr=explot($ this-cut _ custom,$ this-page str);} else { $ str _ first=substr($ this-page str,0,$ this-page _ word);//0-page_word个文字cutStr为func.global中的函数foreach($ this-cut _ tag as $ v){ $ cut _ start=str pos($ str _ first,$ v);//逆向查找第一个分页符的位置if($cut_start){ $ page _ arr[$ I]=substr($ this-page str,0,$ cut _ start).五美元;$ cut _ start=$ cut _ start strlen($ v);打破;} } if(($ cut _ start $ this-page _ word)=$ str _ len _ word){//如果超过总字数$ page _ arr[$ I]=substr($ this-page str,$cut_start,$ this-page _ word);} else { while($cut_start $ this-page _ word)$ str _ len _ word){ foreach($ this-cut _ tag as $ v){ $ str _ tmp=substr($ this-page str,$ cut _ start,$ this-page _ word);//取第剪切_开始个字后的page_word个字符$ cut _ tmp=str pos($ str _ tmp,$ v);//找出从第剪切_开始个字之后,page_word个字之间,逆向查找第一个分页符的位置if($cut_tmp){ $ page _ arr[$ I]=substr($ str _ tmp,0,$ cut _ tmp).五美元;$ cut _ start=$ cut _ start $ cut _ tmp strlen($ v);打破;} } } if(($cut_start $ this-page _ word)$ str _ len _ word){ $ page _ arr[$ I]=substr($ this-page str,$ cut _ start,$ this-page _ word);} } } } $ this-sum _ page=count($ page _ arr);//总页数$ this-page arr=$ page _ arr;返回$ page _ arr} //显示上一条,下一条函数pagenav(){ $ this-set _ URL();$ str=//$str .=$this-ipage ./'.$ this-sum _ page;for($ I=1;$ I=$ this-sum _ page;$i ){ if($i==$this-ipage) { $str .='a href='#' class='cur ' .$ I . '/a ';}else{ $str .='a href=' ' .这个网址$i .$ I . '/a ';} }返回$ str}函数集_ URL(){ parse _ str($ _ SERVER[' QUERY _ STRING '],$ arr _ URL);unset($ arr _ URL[' IP age ']);if(空($ arr _ URL)){ $ str=' ipage=';} else { $ str=http _ build _ query($ arr _ URL),' ipage=';} $this-url='http://' .$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']'?$ str} }?以上分页符类可以非常好的处理内容分页,能处理不同超文本标记语言标签给分页带来的麻烦。如果内容设置了分页符{nextpage},则会优先自动将内容按分页符分页。
调用分页类
我们假设读取了文件text.txt的文章内容,实际项目中应该是表单提交长内容或者读取数据库相关表的内容。然后实例化分页类,然后根据当前页调用对应分页的内容并输出,以及输出分页条。
?PHP $ content=file _ get _ contents(' text。txt’);$ipage=$_GET['ipage']?int val($ _ GET[' IP age ']):1;$CP=新分页符($ content);$ page=$ CP-cut _ str();echo $ page[$ ipage-1];echo $ CP-页面导航();
版权声明:实现长文章分页的PHP示例代码(带源代码)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。