<?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. vue - vue

    一.vue - 介绍 vue的作者叫尤雨溪,中国人.自认为很牛逼的人物,也是我的崇拜之神. 关于他本人的认知,希望大家读一下这篇关于他的文章,或许你会对语言,技术,产生浓厚的兴趣.https://mp ...

  2. saltstack相关

    通过saltstack实现根据不同业务特性进行配置集中化管理,分发文件,采集服务器数据,操作系统基础及软件包管理等第一层为web交互层,采用django+mysql+bootstarp实现,服务端采用 ...

  3. SQL Server批量数据导出导入BCP&Bulk使用

    数据导出导入,首先考虑使用什么技术实现导出与导入利用BCP结合Bulk技术实现数据的导出与导入 1.bcp数据导出(这里是命令行方式),导出的数据需是格式化的,有两种方式可选 a.对传输的数据格式要求 ...

  4. 【Linux】通过top语句可以查看压力测试的实时服务器状态。(可以通过百度Linux top查看相关内容)

    Linux实时查看服务器状态的两个语句 1.显示基本服务器监控状态语句如下:linux top 在这里输入 主要先看服务器负载高不高,高了后能否降下来,再看网络,io,数据库状态. 是有一个工具可以监 ...

  5. tar命令解压时如何去除目录结构及其解压到指定目录 (--strip-components N)

    去除目录结构加上 --strip-components N 如: 压缩文件eg.tar 中文件信息为 src/src/src/eg.txt 运行 tar -xvf eg.tar --strip-com ...

  6. Parallel Decision Tree

    Decision Tree such as C4.5 is easy to parallel. Following is an example. This is a non-parallel vers ...

  7. java基础语法this关键字

    未经允许,禁止转载!!!!!!!! this关键词在java里面很重要,想了解清楚this就必须对  类:对象:this:成员变量:方法:构造方法 都了解清楚. 一.使用this调用本类中的成员变量( ...

  8. python16_day40【数据结构】

    一.链表 #!/usr/bin/env python # -*-coding:utf8-*- __author__ = "willian" # 一.简单链表 class Node( ...

  9. (转)WPF学习资源整理

    由于笔者正在学习WPF,所以整理出网络中部分WPF的学习资源,希望对同样在学习WPF的朋友们有所帮助. 首推刘铁猛的<深入浅出WPF>系列博文 1.深入浅出WPF(1)——什么是WPFht ...

  10. mysql8新特性(一)

    https://www.oschina.net/news/95325/mysql-8-0-ga-released http://blog.itpub.net/28218939/viewspace-21 ...