超长文本分页显示类代码:
//分页
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编码的长文章!