011PHP文件处理——文件处理 文件内容分页操作类
<?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文件处理——文件处理 文件内容分页操作类的更多相关文章
- FileUtils【获取SD卡根目录、读写文件、移动、复制、删除文件、获取文件名、后缀名操作类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了获取SD卡根目录路径.以及对文件读写.获取文件名等相关操作. 因为需要用到android.permission.READ_EX ...
- [Python] Django框架入门5——静态文件、中间件、上传图片和分页
说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...
- 在使用 vscode 时 eslint 检测 .vue 文件中的less 部分内容
问题: 在使用 vscode 以及 eslint 来检测 基于 webpack 的 vue-cli 的项目中,eslint 无法检测到 .vue 文件中的less 部分内容. 解答: 1.通过 下载 ...
- python 替换 文件夹下的 文件名称 及 文件内容
示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...
- ls文件与目录检视,文件内容查阅
-a 列出所有的(含隐藏的)文件,包括.和.. -A 列出所有的(含隐藏的)文件,不包括.和.. -d 仅列出目录本身,而不是列出目录内的文件数据(常用) -f 不进行排序,直接列出结果,ls默认会以 ...
- Android 建立文件夹、生成文件并写入文本文件内容
一.首先添加权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">& ...
- iOS案例:读取指定txt文件,并把文件中的内容输出出来
用到的是NSString中的initWithContentsOfFile: encoding方法 // // main.m // 读取指定文件并输出内容 // // Created by Apple ...
- Java读取文件方法和给文件追加内容
本文转载自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文 ...
- Word,Excel,pdf,txt等文件上传并提取内容
近期项目需求:1.要用到各种文件上传,下载. 2.并对文件进行搜索. 3.仅仅要文件里包括有搜索的内容,所有显示出来. 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力.首先在实现 ...
随机推荐
- 2.wireshark分析之TCP协议(一)
(1) TCP是怎么样的协议? TCP是一种面向连接(连接导向)的.可靠的基于字节流的传输层通信协议.TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认.对失序的数据重新排 ...
- 小米范工具系列之二:小米范 web目录扫描器
最新版本1.1,下载地址:http://pan.baidu.com/s/1c1NDSVe 文件名scandir,请使用java1.8运行 小米范web目录扫描器主要功能是探测web可能存在的目录及文 ...
- Flask系列之源码分析(二)
应用技术点 python之__setattr__ python之threading.local python之偏函数 flask源码上下文管理 1.综述过程 将请求对象压入栈 1.请求进入 __cal ...
- gcc报错 can not be used when making a shared object; recompile with -fPIC
使用google protobuf时,出现错误 /usr/bin/ld: /usr/local/lib/libprotobuf.a(message_lite.o): relocation R_X86_ ...
- OpenResty--mysql,redis 项目中的应用
最近刚刚接手同事的OpenResty的项目,发现对mysql,redis的操作没有用连接池,故对此进行了改造. MYSQL 主要是通过mysql_pool.lua 和 dbutil.lua 来封装对数 ...
- mac3.0环境搭建
export ANDROID_SDK_ROOT=/Users/sjxxpc/Documents/ADT/sdk export ANDROID_NDK_ROOT=/Users/sjxxpc/Docume ...
- devise修改密码
https://ruby-china.org/topics/1314 password/edit不是给你直接改密码用的 这个是忘记密码后,发送重置密码的邮件到你邮箱,同时生成一个token 然后你点那 ...
- hdu5110 dp
题意 给 了 一 个 矩 阵 然 后 , 潜 艇 可 以 向 前 在 西北和东北之间 的区域, 然后每个潜艇有一个值D ,当到达潜艇距离为D的倍数的时候可以得到这个价值,这样我们1000*1000 的 ...
- uva1292 树形dp
这题说的是给了一个n个节点的一棵树,然后 你 从 这 棵 树 的 n 个 节点中 选择 尽量少的 点使得 每条边都至少有一个 士兵看守 dp[0][i]+=dp[1][j] dp[1][i]+=min ...
- 【UI】android如何绘制一个饼图
代码下载 需求 1:实心饼图,颜色填充百分比区域 2:带区域说明 3:饼图有阴影 思路:这个其实和绘制进度条原理差不多,都是360度根据所占百分比算出绘制弧度,然后调用canvas的画弧函数. 阴影其 ...