分享

在PHP中文本文件的分页读取

 Alkaid2015 2013-11-02
实例说明
  在遍历文件中的内容时,由于文件内容很多,最理想的方法就是分页读取文本文件中的内容。本实例将介绍如何分页读取文本文件中的数据。
关键技术
  完成超长文本的分页输出需要3方面的技术:第1方面,自定义函数。通过自定义函数读取文本文件,可以避免中文字符串出现乱码:第2方面,字符串函数。需要通过strlen()函数计算字符串的长度,通过substr()函数对字符串进行截取:第3方面,文件系统函数。通过file_get_contents()函数读取文本文件中的数据。
     自定义函数msubstr()的语法如下:
     //定义一个用于截取一段字符串的函数msubstr()
     function msubstr($str,$start,$len){    //$str指的是字符串,$start指的是字符串的起始位置,$len指的长度
     $strlen=$start+$len;             //用$strlen存储字符串的总长度(从字符串的起始位置都字符串的总长度)
     for($i=0;$i<$strlen;$i++){        //通过for循环语句,循环读取字符串
            if(ord(substr($str,$i,1))>0xa0){   //如果字符串中首个字节的ASCII序数值大于0xa0,则表示为汉字
                 $tmpstr.=substr($str,$i,2);           //每次取出两位字符赋给变量$tmpstr,即等于一个汉字
                 $i++              //变量自加1
              }else{         //如果不是汉字,则每次取出一位字符赋给变量$tmpstr
                  $tmpstr.=substr($str,$i,1);
          }
          }
          return $tmpstr;                //输出字符串
          }
设计过程
  (1)创建function.php文件,编写自定义函数msubstr(),完成对文本文件的截取操作。
  (2)创建index.php文件,首先通过文件系统函数file_get_contents()读取整个文件的内容,然后调用自定义函数和字符串函数完成对文件的截取操作,实现截取后内容的分页输出,其关键代码如下:
  <div id="synopsis">
      <!--创建div 标签,用于获取js文件中返回的分页结果-->
      <table width="545"border="0"cellspacing="0"cellpadding="0">
         <tr>
              <td><?php
                      include("function.php");
  //读取超长文本中的数据,实现超长文本中数据的分页显示
    if($_GET['page']){
    $counter=file_get_contents("data.txt");
         $length=strlen($counter)
         $page_count=ceil($length/850);
         $c=msubstr($counter,0,($_GET['page']-1)*850);
         $c1=msubstr($counter,0,$_GET['page']*850);
           ehco substr($c1,strlen($c),strlen($c1)-strlen($c));
    }
    ?>
           </td>
        </tr>
        <tr>
          <td><table width="535"border="0"align="center"cellpadding="0"cellspacing="0">
               <tr>
                    <!--设置超长文本分页显示的超级链接-->
                    <td width="37%"align="center"valign="middle"bgcolor="#FFFFFF">内容 <?php ehco $page_count;?>页  当前 第<?php echo $_GET['page'];?>页</td>
                    <td width="63%"height="28"align="center"valign="middle">bgcolor="#FFFFFF"><?php
            if($_GET['page']!=1){
      ?>
                     <!--调用no_refurbish_pagination函数,实现无刷新的分页输出-->
                     <a href="#"onClick='return no_refurbish_pagination("index_ok.php?page=1")'>首页</a> <a href="#"onClick='return no_refurbish_pagination("index_ok.php?page=<?php echo $_GET['page']-1;?>")'上一页</a>
                     <?php
                if($_GET['page']!=1){
      ?>
                     <a href="#"onClick="return no_refurbish_pagination('index_ok.php?page=<?php echo $_GET['page']+1;?>')">下一页</a><a href="#"onClick='return no_refubish_pagination("index_ok.php?page=<?php echo $page_count;?>")'>尾页</a>
                     <?php
          }
              ?>
                   </td>
                </tr>
            <table></td>
        </tr>
    </table>
  </div>
  (3)创建index_ok.php文件,实现数据的无刷新分页。index_ok.php中的内容与index.php中div标签synopsis的内容相同。
  (4)创建js脚本文件discuss_js.js,通过Ajax实现无刷新的操作。
秘笈心法
  Ajax无刷新分页。
  在本实例中不但实现了文本文件内容的分页输出,而且是无刷新分页输出。具体操作通过js脚本文件discuss_js.jsindex_ok.php完成。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多