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.仅仅要文件里包括有搜索的内容,所有显示出来. 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力.首先在实现 ...
随机推荐
- python基础之协程函数、列表表达式、生成器表达式
一.协程函数 协程函数的定义?如果在一个函数内部yield的使用方式是表达式形式的话,如x=yield,那么该函数称为协程函数 协程函数补充: def init(func): def wrapper( ...
- 点击劫持漏洞解决( Clickjacking: X-Frame-Options header missing)
点击劫持漏洞 X-Frame-Options HTTP 响应头, 可以指示浏览器是否应该加载一个 iframe 中的页面. 网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面 ...
- Winzip和Winrar命令行的使用
Winzip和Winrar除了提供丰富灵活的图形界面操作功能外,二者都还具备从命令行模式进行文件的压缩与解压缩操作功能,极大的方便了我们在批处理文件中调用压缩软件.以下给出了二者的常用命令行使用方法: ...
- 7.1 Models -- Introduction
一.概述 1. 模型是表示应用程序呈现给用户的底层数据的对象.不同的应用程序有不同的模型,这取决于它们正在试图解决什么问题. 2. 例如,一个照片共享应用程序可能有一个Phone模型来代表一个特殊的照 ...
- Action<>和Func<> 区别
其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDeleg ...
- Linux proc 内存
ps: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 4238 0 ...
- HDU1059 二进制拆分优化多重背包
/*问你能不能将给出的资源平分成两半,那么我们就以一半为背包,运行多重背包模版 但是注意了,由于个数过大,直接运行会超时,所以要用二进制拆分每种的个数*/ #include<stdio.h> ...
- 20145105 《Java程序设计》第4周学习总结
20145105 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 一.何谓继承 (一)继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 如:下述代码将剑 ...
- 20145326 《Java程序设计》第3周学习总结
20145326 <Java程序设计>第3周学习总结 教材学习内容总结 > 从了解java平台概论,JDK到IDE的介绍,基础语法的运用到现在的类与对象,封装.前三章的知识其实都不是 ...
- Android 开机Process xxx (pid xxxx) has died问题分析
系统中有一个监听BOOT_COMPLETED广播的自启应用,概率性出现启动后被kill掉的现象.Log如下: - :: I ActivityManager: Process com.test.xxx ...