<?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>";

  

011PHP文件处理——文件处理 文件内容分页操作类的更多相关文章

  1. FileUtils【获取SD卡根目录、读写文件、移动、复制、删除文件、获取文件名、后缀名操作类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了获取SD卡根目录路径.以及对文件读写.获取文件名等相关操作. 因为需要用到android.permission.READ_EX ...

  2. [Python] Django框架入门5——静态文件、中间件、上传图片和分页

    说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...

  3. 在使用 vscode 时 eslint 检测 .vue 文件中的less 部分内容

    问题: 在使用 vscode 以及 eslint 来检测 基于 webpack 的 vue-cli 的项目中,eslint 无法检测到 .vue 文件中的less 部分内容. 解答: 1.通过 下载 ...

  4. python 替换 文件夹下的 文件名称 及 文件内容

    示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...

  5. ls文件与目录检视,文件内容查阅

    -a 列出所有的(含隐藏的)文件,包括.和.. -A 列出所有的(含隐藏的)文件,不包括.和.. -d 仅列出目录本身,而不是列出目录内的文件数据(常用) -f 不进行排序,直接列出结果,ls默认会以 ...

  6. Android 建立文件夹、生成文件并写入文本文件内容

    一.首先添加权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">& ...

  7. iOS案例:读取指定txt文件,并把文件中的内容输出出来

    用到的是NSString中的initWithContentsOfFile: encoding方法 // // main.m // 读取指定文件并输出内容 // // Created by Apple ...

  8. Java读取文件方法和给文件追加内容

    本文转载自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文 ...

  9. Word,Excel,pdf,txt等文件上传并提取内容

    近期项目需求:1.要用到各种文件上传,下载. 2.并对文件进行搜索. 3.仅仅要文件里包括有搜索的内容,所有显示出来. 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力.首先在实现 ...

随机推荐

  1. 比特币 BTC本地测试节点

    BTC本地测试节点 #环境 ubuntu 16.4 #客户端安装 #下载页面 #https://bitcoin.org/zh_CN/download cd /opt/ wget https://bit ...

  2. Flask知识总汇

    Flask基础 Flask基础使用与配置 Flask路由系统与模板系统 Flask视图函数 Flask请求与响应 Flask的session操作 Flask中间件 Flask连接数据库 Flask使用 ...

  3. 阿里云centos7.2 安装mysql 6.5

    [root@111 ~]# uname -aLinux bxhs 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_ ...

  4. 【接口测试】接口概念及Json相关

    一.接口相关概念 1.什么是接口? 接口:接口就是系统A程序中留的其他系统B访问系统A的接口(实际上是系统某个代码文件下某一个可访问的方法.).其他系统B可以调用这个方法a对系统A中的方法a进行访问从 ...

  5. .NET、NET Framewor以及.NET Core的关系(一)

    什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包 ...

  6. http-从域名到页面

    目录 1. 网络基础 TCP/IP HTTP DNS URI, URL, and URN URI的格式 2. HTTP简单概括 通过实例看HTTP HTTP报文组成 3. 使用Firefox修改请求首 ...

  7. 搭建markdown图床-腾讯云COS

    背景介绍 书写markdown笔记时,如何处理图片,实在是有些棘手的问题.每一张图都保存在当前文件夹? 每张图都自己重命名?每次上传到cnblogs博客都需要一张一张拖动?markdown已经非常成功 ...

  8. Qt编译出错:“Cannot find file...... .pro."

    刚接触Qt,使用Qt5.7时,出现如下编译错误: 其实原因很简单,就是Qt工程目录不能有“中文”.“全角符字符”[暂时发现这两种情况].

  9. Excel error 64-bit version of SSIS

    问题是 在windows server 2008 64位的计划任务执行 ssis 的错误 ,ssis你们带有读取excel 日期 2015/3/17 11:50:34日志 作业历史记录 (SSIS_U ...

  10. 分布式ID方案有哪些以及各自的优势

    1.    背景 在分布式系统中,经常需要对大量的数据.消息.http请求等进行唯一标识.例如:在分布式系统之间http请求需要唯一标识,调用链路分析的时候需要使用这个唯一标识.这个时候数据自增主键已 ...