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高手?学会“懒惰”的编程
Dec 05 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
分析php://output和php://stdout的区别
May 06 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
php7新特性的理解和比较总结
Apr 14 PHP
thinkphp5 路由分发原理
Mar 18 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 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二维数组用键名分组相加实例函数
2013/11/06 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
新教师个人工作总结
2015/02/06 职场文书
销售内勤岗位职责
2015/02/10 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
python turtle绘图命令及案例
2021/11/23 Python