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 生成公钥与私钥
    Swagger PHP使用指南
    数据库需要支持emoji表情
    Lumen实现用户注册登录认证
    Laraver 框架资料
    php curl请求。header头中添加请求信息
    linux 下看所有用户 及所有组
    瀑布流下滑 发送ajax
    Linux系统中的wc
    Nginx 日志分析及性能排查
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1279309.html
Copyright © 2011-2022 走看看