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 函数学习简单小结
Jul 08 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 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实现生成唯一会员卡号
2015/08/24 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
PHP文件操作实例总结
2016/09/27 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
php经典趣味算法实例代码
2020/01/21 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python多线程实例教程
2014/09/06 Python
python获取本地计算机名字的方法
2015/04/29 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
12月小学生校园广播稿
2014/02/04 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
确保工程质量承诺书
2015/04/29 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
保留意见审计报告
2015/06/05 职场文书
心理学培训心得体会
2016/01/22 职场文书
《失物招领》教学反思
2016/02/20 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
Win11开始菜单添加休眠选项
2022/04/19 数码科技