Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.5k views
in Technique[技术] by (71.8m points)

PHP读取TXT内容怎么按行分页?

1。用PHP读取TXT内容,然后按10行分页,该怎么实现呢?
2。如果TXT文本每一行里的内容是按TAB分隔或者空格分隔开的,该怎么进行拆分呢?

<?php  
    $str= file_get_contents("names.txt");//将文件中的内容读成字符串
    $str1=explode("
",$str);//按换行进行拆分//单引号是转义字符,所以必须使用双引号
    //var_dump($str1);//通过这种方式可以输出详细的信息
    foreach($str1 as $value){
    if($value=="")continue; //最后一行是空格,当找出最后一行的时候直接跳过,不进行下面的操作
    //1 | 朱芳 | 18 | [email]b.unyrl@tpwpqt.st[/email] | http://XEP.VC
    //此时对此一组数据进行拆分    
    $cols=explode('|',$value);//按竖线进行拆分
    //1  朱芳  18  [email]b.unyrl@tpwpqt.st[/email]  http://XEP.VC
    //将这一组数据存进数组里
    $data[]=$cols; //将每次得到的存放在一个数组中
    }
 
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>全部人员信息表</title>
    <link rel="stylesheet"   media="all">
  <link rel="stylesheet"  media="all">
</head>
<body>
    <h1>全部人员信息表</h1>
    <table class="layui-table">
        <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>邮箱</th>
            <th>网址</th>
        </tr>
        </thead>
        <tbody>
            <!-- 第一层遍历$data数组 -->
             <?php foreach($data as $str2):?>
                
                 <tr>
                 <!-- 第二层是遍历$data数组中的数组 -->
                    <?php foreach($str2 as $col):?>
                    <!-- 处理掉每个列前后的空格 -->
                    <?php $col=trim($col);?>
                    <!-- 单独处理最后一列,找出最后一列,用前缀 -->
                    <?php if(strpos($col,'http://')===0):?>
                          <!-- 大写转小写 -->
                          <?php $col1= strtolower($col);?>
                          <td><a href="$col1"><?php echo substr($col1,7);?></a></td>
                    <?php else: ?>
                          <td><?php echo $col; ?></td>
                    <?php endif ?>
                    <?php endforeach ?>
                 </tr>
              <?php endforeach ?>
        </tbody>
    </table>
 
</body>
</html>

文本内容:
1 | 朱芳 | 18 | b.unyrl@tpwpqt.st | http://XEP.VC
2 | 康丽 | 22 | e.ifmc@fyvutpzio.pro | http://WSURR.PH
3 | 沈平 | 34 | m.vvnjhv@npiqo.tk | http://BGEGFBTEP.KH
4 | 吴平 | 19 | v.rjlo@ljjuit.sc | http://FOQMVET.ST
5 | 邵涛 | 20 | k.pmemrobuq@skt.name | http://JOQQ.TM
6 | 廖磊 | 14 | y.xoxbk@vgdsctz.mz | http://XGDWPM.NET
7 | 文敏 | 12 | o.fwmvfirdm@yfw.mx | http://MUPT.SL
8 | 罗平 | 32 | s.sxohwsf@bpcvf.lk | http://ADEBOQ.BN
9 | 林芳 | 18 | p.vozfcy@ntti.info | http://NQXWELT.LC
10 | 黎超 | 39 | q.decxs@wzotsllfj.cn | http://RFTTUKOK.RW
11 | 于明 | 37 | n.oqxpry@jnc.cl | http://WPEEJDSG.MX
12 | 沈敏 | 25 | h.vyucoiqmnk@itbs.gy | http://PYDWDS.FM
13 | 唐霞 | 34 | p.iwqd@dqqiwqmtjm.kp | http://SKDLMD.DZ
14 | 张芳 | 34 | o.ufprjagx@ucmluvh.cm | http://GUVCWT.AERO
15 | 杨勇 | 40 | m.cetvzsugi@hntqvwjt.lv | http://NGRNYH.DJ
16 | 汪静 | 31 | u.tpry@xgoolb.lb | http://ONTW.PW
17 | 曾丽 | 27 | t.tmlpzccdm@dtksokhzlg.ci | http://EUCECSWSH.MY
18 | 余娜 | 15 | u.ymcbls@xgvidnnw.gp | http://OARGNEYD.CV
19 | 史秀兰 | 33 | k.nlgou@anokn.kg | http://MRGMDVLF.MW
20 | 唐磊 | 17 | d.ezmeqs@rvndkg.sa | http://ZWAV.ID


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

你写的逻辑也能用,不过,结果化的数据,存入数据库里不是方便的多么?哪怕是 sqlite,也会在业务逻辑上把这个内容获取的活丢出去啊.

另外, 如果你就是打算用文件来处理,不建议使用 file_get_contents 来一次性把文件读入,如果文件很大,读入一次,分割一次,都会导致你使用的内存暴涨,而且你的这个文件结构,并不是说必须读入全部文件才能解析结构,完全可以读入一行处理一行啊.

那么,请你看下 fgets 或者 stream-get-line 这两个函数.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...