<?php /** * 文件内容分页操作类: */ //访问地址:http://basicphp.com/006file/011.php?&page=1 class StrPage { private $file;//文件内容 private $current;//当前页 private $totalPage;//总的页数 private $url; private $pageLen;//每一页显示的内容长度 function __construct($file, $len = 90) { $this->file = file_get_contents($file); $this->current = isset($_GET['page']) ? $_GET['page'] : 1; $this->pageLen = $len; $this->totalPage = $this->getTotalPage(); $this->url = $this->getUrl(); //echo $this->url; } private function getTotalPage() { return ceil(strlen($this->file) / $this->pageLen); } private function getUrl() { /* * $_SERVER['QUERY_STRING'] 查询(query)的字符串:输出:page=3&cid=3 $_SERVER['PHP_SELF']; 获取当前页;输出:011.php $_SERVER['REQUEST_URI']; 获取当前页,在获取查询的字符串 */ $url = parse_url($_SERVER['REQUEST_URI']); //print_r($url);//输出:Array ( [path] => /006file/011.php [query] => page=3&cid=3 ) parse_str($url['query'], $queryArr);//parse_str();把查询字符串解析到变量中 //print_r($queryArr);//输出:Array ( [page] => 3 [cid] => 5 ) unset($queryArr['page']);//输出数组中的page参数 $queryStr = http_build_query($queryArr);// http_build_query() 生成 URL-encode 之后的请求字符串 return $url['path'] . '?' . $queryStr . '&page=';//返回:/006file/011.php?cid=5&page= } private function first() { if ($this->current > 1) return "<a href='" . $this->url . "1'>首页</a>"; } private function pre() { if ($this->current > 1) return "<a href='" . $this->url . ($this->current - 1) . "'>上一页</a>"; } private function next() { if ($this->current < $this->totalPage) return "<a href='" . $this->url . ($this->current + 1) . "'>下一页</a>"; } private function end() { if ($this->current < $this->totalPage) return "<a href='" . $this->url . $this->totalPage . "'>末页</a>"; } private function pageList() { $pageListStr = ''; for ($i = 1; $i < $this->totalPage; $i++) { if ($i == $this->current) { $pageListStr .= $i; } else { $pageListStr .= "<a href='" . $this->url . $i . "'>$i"." </a>"; } } return $pageListStr; } public function pageStyle($style = 1) { switch ($style) { case 1: return "共有" . $this->totalPage . "页" . $this->first() . $this->pre() . $this->pageList() . $this->next() . $this->end(); break; case 2: return $this->pageList(); } } public function getContents() { $prePageLen = strlen($this->subStrs($this->current - 1)); $currentPageLen = strlen($this->subStrs($this->current)); return substr($this->file,$prePageLen,$currentPageLen-$prePageLen); // return 22; } private function subStrs($page) { $len = $page * $this->pageLen; $string = ''; for ($i = 0; $i < $len; $i++) { if (ord(substr($this->file, $i, 1)) > 0xa0) { $string .= substr($this->file, $i, 2); } else { $string .= substr($this->file, $i, 1); } } return $string; } } $php = new StrPage('a.txt',90); echo '<div style="font-size: 12px; color: green;height: 80px;">'.$php->getContents().'</div>'; echo "<div style='border: 1px #188eee solid; font-size: 12px;'>"; echo $php->pageStyle(); echo "</div>";