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中常用数组处理方法实例分析
Aug 30 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
PHP中的流(streams)浅析
Jul 02 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
有关Python的22个编程技巧
2018/08/29 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python爬取网页信息的示例
2020/09/24 Python
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
学校门卫管理制度
2014/01/30 职场文书
财务出纳岗位职责
2014/02/03 职场文书
动员大会主持词
2014/03/20 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
社区义诊活动总结
2014/04/30 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
Python合并pdf文件的工具
2021/07/01 Python