PHP中的超长文本的分页输出,超长文本的分页显示类,干货!

超长文本分页显示类代码:

//分页

class StrPage{

private $file;//文件内容,比如总共10000字

private $current;//当前页

private $totalpage;//总页数

private $pagelen;//每页显示的内容长度,比如200字

private $url;

function __construct($file,$len=500){

//获取文章内容

$this->file=file_get_contents($file);

//获取当前页的页码,默认为1

$this->current=isset($_GET['page'])?$_GET['page']:1;

//获取每页显示的长度

$this->pagelen=$len;

//获取总页数

$this->totalpage=$this->getTotalPage();

//获取分页url的地址

$this->url=$this->getUrl();

}

//获得总页数

private function getTotalPage(){

//ceil()向上取整 总页数=当前页的内容个数/每页显示的内容个数

return ceil(strlen($this->file)/$this->pagelen);

}

//获得url

private function getUrl(){ $url= parse_url($_SERVER['REQUEST_URI']);

if(!empty($url['query'])){

parse_str($url['query'],$queryArr);

unset($queryArr['page']);

//print_r($queryArr);

$questStr=http_build_query($queryArr);

//组合成字符串,便于分页能够正常显示

if(!empty($questStr)){

return $url['path']."?".$questStr.'&page=';

}else{

return $url['path']."?".'page=';

}

}else{

return $url['path']."?".'page=';

}

}

//首页

private function first(){

//如果当前页大于1

if ($this->current>1) {

//显示首页的字符串

return "首页 ";

}

}

//上一页

private function pre(){

//判断如果当前页不等于1

if ($this->current!=1) {

//显示上一页的字符串

return "上一页 ";

}

}

//下一页

private function next(){

// 如果当前页不等于总页数,显示下一页的字符串

if ($this->current!=$this->totalpage) {

return "下一页 ";

}

}

//末页

private function end(){

//如果当前页小于总页数,显示末页的字符串

if ($this->currenttotalpage) {

return "末页 ";

}

}

//其他的页数

private function pageList(){

//定义一个字符串为空

$pageListStr='';

//定义开始页,如果当前页-5页大于1,则为当前页-5,否则为1

$startpage=($this->current -5)>1? $this->current-5 : 1;

//末尾页,如果当前页+6页大于总页数,则为总页数+1,否则为当前页+6

$endpage=($this->current +6)>$this->totalpage? ($this->totalpage+1): $this->current+6;

//进行循环,起始为开始页,小于末尾页

for ($i=$startpage; $i < $endpage; $i++) {

//如果i为当前页,则串上字符串,不显示当前连接

if ($i==$this->current) {

$pageListStr.=$i." ";

}else{

//否则,串上带连接的字符串

$pageListStr.="".$i." ";

}

}

//返回这个字符串

return $pageListStr;

}

//定义页面样式

public function pageStyle($sytle=1){

//定义字面样式,分为2种

switch ($sytle) {

//首页 上一页 3,4,5,下一页,末页

case 1:

return "共有".$this->totalpage."页 ".$this->first().$this->pre().$this->pageList().$this->next().$this->end();

break;

//1,2,3,4,5

case 2:

return $this->pageList();

break;

}

}private function subStrs($str,$start,$len){

$string='';

$strlen=$start+$len;

for($i=0;$i

if(ord(substr($str,$i,1))>0xa0){

$string.=substr($str,$i,3);

$i++;

$i++;

}else{

$string.=substr($str,$i,1);

}

}

return $string;

}

public function getContents(){

//获取上一页的数据

$b=$this->subStrs($this->file,0,($this->current-1)*$this->pagelen);

$b1=$this->subStrs($this->file,0,$this->current*$this->pagelen);

echo substr($b1,strlen($b),strlen($b1)-strlen($b))."
";

}

}

//调用分页类

$c=new StrPage('text1.txt');

$c->getContents();

echo $c->pageStyle(1);

?>

此分页类的代码只用于截取utf8编码的长文章!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值