php中长文章分页显示实现代码


Posted in PHP onSeptember 29, 2012

欢迎交流!实现代码如下:

<?php include('include/config.php'); ?> 
<?php 
/** 
*Author:乌鸟heart 
*实现长文章分页的代码 
*原理: 
*利用一个数组来记录文章每一页(用p0、p1、p2...做手动标记)的起始字节数,然后通过利用php函数操作这个数组去显示分页后的文章。分页显示,传递ptag(与tag的值一样)值。 
*利用到的php函数: 
*1、strlen("字符串") - Returns the length of the given string. - 返回字符串的字节总数。 
*2、strpos("字符串","匹配字符") - Returns the numeric position of the first occurrence of needle in the haystack string. - 返回字符串中出现的第一个相匹配的字符所在的字节序数。 
*3、substr("字符串","起始位置","终止位置") - substr() returns the portion of string specified by the start and length parameters. - 返回字符串中指定起止位置的若干字符。 
*/ 
$sql = "select * from article where id = 41";//定义sql语句,返回id为41的内容 
$result = mysql_query($sql);//执行sql语句,返回结果集 
$row = mysql_fetch_array($result);//以数组的形式从记录集返回 
$content = $row['content'];//把文章赋给变量$content 
$articleCounts = strlen($content);//返回$content(文章)的总字节数 
$isTrue = true;//循环标记 
$tag = 0;//分页标记、数组下标 
echo "字节总数:".$articleCounts."<br>";//测试信息 
//寻找标记“ptag”,并把其位置(所在的字节数)赋给数组array[]------------------------------------------ 
while($isTrue){ 
$startAt = strpos($content,"p".$tag);//得到相应ptag的字节序数 
if($startAt != false){ //如果有标记(返回值不是false),则记录位置 
$array[$tag++] = $startAt; 
}else{ //如果没有标记,则将数组array[0]赋值'\0' 
$array[$tag] = '\0'; 
$isTrue = false; 
} 
} 
//循环输出标记位置-------------------------------------------------------------测试信息 
for($i = 0; $i < $tag; $i++){ 
echo $array[$i]."<br>"; 
} 
echo "------------------------------ <br>"; 
//输出内容--------------------------------------------------------------------- 
if($array[0] == '\0'){ //判断是否有标记 
echo $content; //没有标记的情况,单页显示 
}else{ //有标记的情况,分页显示 
//输出分页内容 
if( isset($_GET['ptag']) ){ //判断是否有ptag值传递,有则显示第 ptag+1 页,否则显示第一页(ptag=0) 
$ptag = $_GET['ptag']; //把ptag的值赋给变量$ptag 
if($ptag < $tag){ //判断参数是否有误 
echo "有值传递,显示第".($ptag+1)."页<br>"; //测试信息 
echo "值为:".$ptag."<br>"; //测试信息 
echo substr($content,$array[$ptag - 1] + 2,$array[$ptag] - $array[$ptag - 1] - 2);//显示ptag+1页的内容 
}else{echo "参数有误";} 
} 
else{ //没有ptag值传递的情况,显示第一页(ptag=0) 
echo "无值传递,显示第1页<br>"; //测试信息 
echo substr($content,0,$array[0] - 1);//显示第一页的内容 
} 
} 
//循环显示页数链接------------------------------------------------------------- 
if($array[0] != '\0'){ //在有手动标记的情况下才显示页数链接 
for($i = 0;$i < $tag;$i++){ 
if($ptag == $i){ //如果是本页,则粗体显示 
$pager .= " <a href='test.php?ptag=$i'><b>".($i+1)."</b></a> "; 
}else{ //不是本页 
$pager .= " <a href='test.php?ptag=$i'>".($i+1)."</a> "; 
} 
} 
echo "<br>跳转至第".$pager."页"; //输出链接 
} 
?>
PHP 相关文章推荐
PHP个人网站架设连环讲(二)
Oct 09 PHP
php获取某个目录大小的代码
Sep 10 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
一文搞懂PHP中的抽象类和接口
May 25 PHP
PHP实现下载功能的代码
Sep 29 #PHP
php流量统计功能的实现代码
Sep 29 #PHP
Zend的AutoLoad机制介绍
Sep 27 #PHP
说说PHP的autoLoad自动加载机制
Sep 27 #PHP
php FLEA中二叉树数组的遍历输出
Sep 26 #PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 #PHP
PHP可逆加密/解密函数分享
Sep 25 #PHP
You might like
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python从MP3文件获取id3的方法
2015/06/15 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python实现画一颗树和一片森林
2018/06/25 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python 导入文件过程图解
2019/10/15 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Python网页解析器使用实例详解
2020/05/30 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
英语专业个人求职信范文
2014/02/01 职场文书
动物科学专业求职信
2014/07/27 职场文书
农村党员对照检查材料
2014/09/24 职场文书
教师学期末个人总结
2015/02/13 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
烈士陵园观后感
2015/06/08 职场文书
市级三好生竞选稿
2015/11/21 职场文书