全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 854|回复: 12

[Windows VPS] 求大佬帮忙改改 已解决

[复制链接]
发表于 2019-5-21 10:24:11 | 显示全部楼层 |阅读模式
本帖最后由 doing 于 2019-5-21 13:45 编辑

需要每次读取txt内容前10行,然后删除这10行。



1、只读取了1行,我要10行。

2、我想加个按钮,点击后在删除,而不是现在的访问就删除。(注意是点击后删除,echo还是要显示取出的内容的)

本人菜鸟,希望大佬帮忙改改,重写也行。现在也不让悬赏金币感谢,只能由衷的感谢热心大佬。







发表于 2019-5-21 10:24:59 | 显示全部楼层
有请楼下的大佬
发表于 2019-5-21 10:26:17 | 显示全部楼层

有请楼下的大佬
发表于 2019-5-21 10:27:35 | 显示全部楼层
没看懂,这里应该有高手
发表于 2019-5-21 10:31:29 | 显示全部楼层
本帖最后由 dalaoa 于 2019-5-21 10:43 编辑

其实你百度一下代码就有了

PHP获取文件中指定行数的数据
http://www.liqingbo.cn/blog-1292.html


PHP 删除文本文件的任意一行或添加
https://blog.csdn.net/esonbest1234/article/details/50729216


按钮调用php函数
https://www.c n blogs.com/zhangyutong926/p/3182638.html

这几个文章代码,组合一下,自己稍微改改就OK了
发表于 2019-5-21 10:50:45 | 显示全部楼层
这是我照着PHP文档瞎写的。好不好用不知道。可能出现的错误也没处理。
  1. /**
  2.      * @param $fileName 文件路径
  3.      * @param $line 需要读取(删除)的行数
  4.      * @param bool $remove 删除时传true,读取时传false
  5.      * @return bool|string 如果是删除,则返回true,读取时返回读取到的内容;
  6.      */
  7.     public function readTestFile($fileName, $line, $remove = true)
  8.     {
  9.         $f = fopen($fileName, 'r');
  10.         $text = "";
  11.         for ($i = 1; $i <= $line; $i++) {
  12.             $text .= fgets($f);
  13.         }
  14.         if ($remove === true) {
  15.             ob_start();
  16.             fpassthru($f);
  17.             file_put_contents($fileName, ob_get_clean());
  18.             fclose($f);
  19.             return true;
  20.         } else {
  21.             fclose($f);
  22.             return $text;
  23.         }
  24.     }
复制代码
发表于 2019-5-21 11:36:06 | 显示全部楼层
不删除,每次读取10行
  1. <?php
  2. $p = isset($_GET['p']) ? intval($_GET['p']) : 0;
  3. $file = fopen('list.txt', 'r');
  4. $content = '';
  5. fseek($file, $p, SEEK_SET);
  6. for ($i = 0; $i < 10; $i++) {
  7.     if ($line = fgets($file)) {
  8.         $content .= $line;
  9.     } else {
  10.         break;
  11.     }
  12. }
  13. $p = ftell($file);
  14. fclose($file);

  15. ?>

  16. <!DOCTYPE html>
  17. <html>
  18. <head>
  19.     <title>test</title>
  20. </head>
  21. <body>
  22. <pre>
  23. <?php echo $content; ?>
  24. </pre>
  25. <form action="">
  26.     <a href="?p=0">重置</a><br><a href="?p=<?php echo $p ?>">再读10行</a>
  27. </form>
  28. </body>
  29. </html>
复制代码


网页界面效果:
------------
0
1
2
3
4
5
6
7
8
9
重置
再读10行
------------
 楼主| 发表于 2019-5-21 11:40:31 | 显示全部楼层
feixuenet 发表于 2019-5-21 10:50
这是我照着PHP文档瞎写的。好不好用不知道。可能出现的错误也没处理。

不行,运行出错。可能function调用不对,大佬详细说说,弄好了有红包
发表于 2019-5-21 12:11:57 | 显示全部楼层
  1. <?php


  2. function readTxt($name,$rln){
  3.         $file = fopen($name,"r");
  4.         $data = [];
  5.         for($n=0;$n<$rln;$n++){
  6.                 $s = fgets($file);
  7.                 array_push($data,$s);
  8.         }
  9.         fclose($file);
  10.         return $data;
  11. }

  12. function delTxt($name,$rln){
  13.         $items = file($name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  14.         foreach ($items as $key => $item) {
  15.                 if($key >= $rln){
  16.                         $new[] = $item;
  17.                 }
  18.     }
  19.     if ($new) {
  20.         // Write file with $new content
  21.         file_put_contents($name, implode("\n", $new));
  22.     }
  23. }

  24. $rln = 10;
  25. $rt = readTxt('abc.txt',$rln);
  26. delTxt('abc.txt',$rln);
  27. var_dump($rt);
  28. ?>
复制代码


添加一个按钮 调用delTxt删除
 楼主| 发表于 2019-5-21 12:19:10 | 显示全部楼层
yemingtu 发表于 2019-5-21 11:36
不删除,每次读取10行

大佬,我试了你这个挺好的。就是不删除的话,下次运行还得从头开始啊,有办法解决吗?大佬费点心,弄好了红包感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-23 20:41 , Processed in 0.066602 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表