zoukankan      html  css  js  c++  java
  • php长文章分页

    <?
    /**
    * * 如果一篇文章内容较长(如40000字节的文章,且保存在一个字段中),可用以下代码进行分页显示
    *本代码只对纯文本内容有效,首先按字节数分页,但是以\n为分页点的,不会将一段文字分到两页中。因此在符合字节数的条件下还需要有\n,如果没有则视为一段话,不进行分页。
    *
    * \n在文本框中为回车
    */
    $c_page="";
    if(isset($ _GET['page']))$c_page=$ _GET['page']; //去掉中间空格//当前页
    $contstr="第一行GDSGVFGFDGFDGFDFDFDSF
    第2行FDSAFDSFASDFF
    第3行FDSAFDSAFDSAFSDAFDSFDSAF
    第4行DSAFDSAFSDAF
    第5行FDSAFDSFDSFDSFFDERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR";// 文字内容,可从数据库中查询出
    $listbyte=7; //每页显示字节数,正常情况下可设置为5000或其他
    //##寻找文章分页点----------
    $contlen=strlen($contstr);
    $j=0; //总页数
    $listat[0]=0;
    $lookAt=0;
    for($i=1;$i<$contlen/$listbyte+1;$i++){
    if($lookAt<$listbyte)
    $lookAt=$listbyte;
    if($lookAt>$contlen){
    $j++;
    $listat[$j]=$contlen;
    break;
    }
    $endAt=strpos($contstr,"\n",$lookAt); // \n
    //如果余下的内容不足一页的1/5加到本页或找不到分页符则作一页处理
    if($endAt>$contlen-$listbyte/5 or intval($endAt)<1){
    $j++;
    $listat[$j]=$contlen; ///
    break;
    }
    else{
    $j++;
    $listat[$j]=$endAt;
    $lookAt=$endAt+$listbyte;
    }
    }

    //打印页码
    $pagenum=$j;//总页
    $page=intval($c_page);
    if(empty($page) or $page<1 or $page>$pagenum) $page=1;
    if($pagenum>1)
    for($i=1;$i<$pagenum+1;$i++){echo "<a href='?page=$i'>$i 页</a> ";}

    //输出当前页内容
    $stag=$page-1;
    $startb=$listat[$stag];
    if($startb>0) //去除首个换行
    $startb=$startb+1;
    $cont=substr($contstr,$startb,$listat[$page]-$startb);
    echo "<BR/>文章内容:<BR/>";
    if($page>1)
    echo "[接上页] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $cont;
    ?>

  • 相关阅读:
    git的使用
    对大学学习的一些看法
    远程连接mysql失败情况总结
    缓存穿透、缓存击穿、缓存雪崩
    Hello Redis
    Celery的简单使用
    git操作
    码云、github同时配置ssh key,解决冲突问题
    阿里云短信验证码服务
    Vue中img标签的src属性绑定的坑
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1279309.html
Copyright © 2011-2022 走看看