新浪等一些大平台新闻网站经常使用内容分页技术,把一篇文章分成若干部分,每一部分作为其中一页,以这种形式展现给用户,不仅提升了用户体验,也提高了网站加载内容的效率,但是这种做法最大的问题就是在截取字符串的时候会出现乱码,下面是我做的一个测试,基本没什么问题,没有乱码出现。

代码如下:

header('content-type:text/html;charset="utf-8"');

class StrPage{

private $file;//文件内容

private $current;//当前页

private $pageLen;//每页显示的内容长度

private $totalPage;//总页数

private $url;//url地址

public function __construct($file,$len){

$a = array(' ',' ','\t','\n','\r','\s');

$b = array('','','','','');

$this->file = str_replace($a,$b,file_get_contents($file));

$this->current = $_GET['page'] ? $_GET['page'] : 1;

$this->pageLen = $len;

$this->totalPage = $this->getTotalPage();

$this->url = $this->getUrl();

}

private function getTotalPage(){

return ceil( strlen($this->file) / $this->pageLen );

}

private function getUrl(){

$url = parse_url($_SERVER['REQUEST_URI']);

parse_str($url['query'],$arry);

unset($arry['page']);

$query = http_build_query($arry);

return $url['path'].'?'.$query.'&page=';

}

private function first(){

if($this->current>1){

return '首页  ';

}

}

private function next(){

if($this->currenttotalPage){

return '下一页  ';

}

}

private function pre(){

if($this->current>1){

return '上一页  ';

}

}

private function end(){

return '末页';

}

private function subStrs($str){

if(ord(substr($this->file,$str,1))>127){

if(strlen(substr($this->file,0,$str))%3==1){

return $str+=2;

}else if(strlen(substr($this->file,0,$str))%3==2){

return $str+=1;

}else{

return $str+=0;

}

}else{

return $str+=0;

}

}

public function getContents(){

$prePageLen = $this->subStrs(($this->current-1)*$this->pageLen);

$currentPageLen = $this->subStrs($this->current*$this->pageLen);

$string = substr($this->file,$prePageLen,$currentPageLen-$prePageLen);

echo $prePageLen;

echo $currentPageLen;

return $string;

}

public function pageStyle(){

return '共有'.$this->totalPage.'页  '.$this->first().$this->pre().$this->next().$this->end();

}

}

$php = new StrPage('file.txt',500);

echo '

'.$php->getContents().'

';

echo '

';

echo $php->pageStyle();

echo '

';

注意,你的文件编码和php脚本的编码要一致,我这边用的是utf8编码,在截取字符串避免乱码的时候与gbk稍有不同,详情请看上一章节。

php分页功能乱码了怎么办,51、PHP文件内容分页操作,避免乱码相关推荐

  1. idea Java 读取rtf文件内容,解决中文乱码的问题。

    百度找了很多java读取rtf文件内容的案例,都不行,不是读不出来就是乱码,要么就是多了很多编码异常的字符. 最后成功解决,得益于大佬的源码贡献,如下链接: 转载于:http://blog.sina. ...

  2. android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...

    本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...

  3. java输出txt乱码_Java程序输出txt文件内容时中文乱码怎么处理?

    中文乱码解决方案:代码如下,请参照public class TestStream {public static void main(String[] args) throws Exception{Da ...

  4. 记事本编写的html乱码,记事本编写的HTML文件,用浏览器打开乱码

    今天第一次写html,就遇到了问题,用记事本编写html代码之后,另存为.html,用浏览器打开出现乱码. 这是什么原因呢,检查代码各个标签格式都没有问题,经过百度之后,才知道,记事本保存的TXT文件 ...

  5. c语言将数据写入文件后乱码_C语言中写入文件的字符数组为乱码,但整形数据却正常!!!...

    在TC中~#include#include#include#include#includecharstr[10];staticcharstr2[10]="1234";structs ...

  6. android阅读器里的 txt 文本处理分页功能的实现:

     txt 文本处理分页功能的实现: 网上找了txt文本分页,实现小说阅读器的功能找了很久找不到自己想要的,所以自己实现一个专门处理txt文本分页功能的类.有人建议用randomAccessFile 可 ...

  7. jQuery实现的简单分页功能的详细解析

    分页功能在项目开发中不可或缺,老司机操作起来就和呼吸一样简单,新手恐怕就会吃力一些. 今天我回顾了一下具体的操作步骤,决定详细的分析一下每一步的实现目的及原理. 我们会创建一个简单的json文件来模拟 ...

  8. Jekyll分页功能

    安装Jekyll分页功能 检测自己是否已经安装了该分页插件. sudo gem install jekyll-paginate 分页设置 在_config.yml中进行设置 # 分页 gems: [j ...

  9. 手把手带你写代码,完美实现Java分页功能

    小伙伴们应该都知道,我们在项目开发中经常要用到分页功能,现在我们一般都会使用各种分页插件来进行快速实现.不过在面试的时候,面试官有时会问我们分页的实现过程与原理,这就有点让人防不胜防了.所以为了防止大 ...

最新文章

  1. web3j官网的完整中文翻译(java开发区块链以太坊应用的开源类库)
  2. exit()、_Exit() 和 _exit() 函数的区别和联系
  3. PWA · 前后端协作 · Node | JTalk 掘金线下活动第七期
  4. bootstrapV4.6.0实现标签页(改造v3.3.7)- 代码篇
  5. c语言输入日期返回星期几,C语言程序设计: 输入年月日 然后输出是星期几
  6. openstack configure
  7. [导入]一个好网站的策划设计
  8. 函数式编程(一) 认识“编程范式”和“函数”
  9. PASCAL VOC 2012数据集
  10. FPGA信号处理系列文章——CIC滤波器的再理解
  11. 简易cad导出pdf程序源码
  12. 什么叫云服务器?云服务器的概念及优势
  13. 自学WEB开发第一天:工欲善其事,必先利其器。基于VB语言,纠结于VS和VS code之间
  14. 破解tumblr背景音乐
  15. 微信小程序产品定位及功能介绍
  16. F5虚拟机(LTM Virtual Edition)安装教程
  17. 【算法岗求职笔记】降维 · 五问五答
  18. 继WhatsApp后 Facebook聊天工具Messenger用户也突破十亿人
  19. oracle 如何导入txt,Oracle中导入TXT并进行处理
  20. 华为博士招聘上机考试题目_华为校园招聘上机考试题目

热门文章

  1. JVM_java内存区域
  2. [云炬创业学笔记]第一章创业是什么测试2
  3. [云炬创业管理笔记]第一章测试5
  4. [云炬创业基础笔记]第一章创业环境测试2
  5. google设置在新标签页打开的方法
  6. 安顺计算机二级考试,安顺市2020年3月计算机二级报名时间|网上报名入口【12月18日9:00开通】...
  7. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例
  8. appid 参数错误_辽宁罗茨风机参数
  9. Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意
  10. MatConvnet工具箱文档翻译理解(1)