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和XSL stylesheets转换XML文档
Oct 09 PHP
十天学会php之第九天
Oct 09 PHP
基于mysql的论坛(7)
Oct 09 PHP
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
PHP调用其他文件中的类
Apr 02 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 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
3种平台下安装php4经验点滴
2006/10/09 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
使用python3实现操作串口详解
2019/01/01 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
总账会计岗位职责
2014/03/13 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
企业催款函范本
2015/06/24 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python