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;
    ?>

  • 相关阅读:
    Rman-10038: Database Session For Channel D1 Terminated Unexpectedly
    MySQL从入门到项目实践 pdf下载
    Oracle_优化器使用(oracle11g)
    当sqlserver启用sa账户时,出现Microsoft SQL Server 错误代号: 15535 解决方法 (转)
    sqlserver 如何分析“死锁调度程序”转储?
    AtCoder Beginner Contest 213
    LOJ
    [学习笔记] 计算几何
    [COCI 2009-2010 #6] XOR
    BZOJ
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1279309.html
Copyright © 2011-2022 走看看