永发信息网

php如何获取txt文本指定行的指定数据?

答案:3  悬赏:0  手机版
解决时间 2021-03-27 21:23
  • 提问者网友:像風在裏
  • 2021-03-27 06:43
php如何获取txt文本指定行的指定数据?
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-03-27 07:58
首先获取txt文件的内容,然后在截取字符串
1:使用PHP的file_get_contents() 函数获取取txt文件的内容
实例:
echo file_get_contents("test.txt");
?>2:然后在使用PHP的substr( )
实例:
 $str1 = substr($str,5);
     $str2 = substr($str,9,4);

  echo "从第9个字符开始取4个字符:".$str2.";

  $str3 = substr($str,-5);

  echo "取倒数5个字符:".$str3." ";

  $str4 = substr($str,-8,4);

  echo "从倒数第8个字符开始向后取4个字符:".$str4." ";

  $str5 = substr($str,-8,-2);

  echo "从倒数第8个字符开始取到倒数第2个字符为止:".$str5."";          ?>

全部回答
  • 1楼网友:往事埋风中
  • 2021-03-27 09:14
如果直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容,比如这个文件有1GB的时候。
这个时候使用传统的文件操作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:
// 需要查找的内容
$search = 'bcd';
// 打开文件
$res = fopen('a.txt', 'r');
while ($line = fgets($res, 1024)) {
// 根据规则查找
if (strpos($line, $search) === 0) {
// 根据既定规则取得需要的数据
echo substr($line, 4, -1); // 这里就是你想得到的
break;
}
}
// 关闭文件
fclose($res);
  • 2楼网友:底特律间谍
  • 2021-03-27 08:19
//恩在我给你php的源码你看看
$open=file_get_contents("abcd.txt");
//把abcd.txt整个文件当做字符串存在$open变量里
$arr=explode("\r\n",$open);

shuffle($arr);
//打乱数组
for($i=0;$i<10;$i++)
//循环,这回是输出$arr2的10条
{
echo $arr[$i].'
';
}
?>追问请看题目要求。。追答
//我的意思是逻辑思维是这样的我还是帮你敲出来你看看
$a=file('a.txt');
echo $a[1];
?>


追问不好意思,我的意思是输入bcd搜索输出234,不是人工搜索bcd,而是让php搜索,能不能再麻烦改下,谢谢了
好了追加100追答
$file_in = fopen('a.txt', 'r');     //以只读方式('r')打开文件'a.txt',
while(!feof($file_in)){                      //如果没有达到文件尾,就继续循环
    $line = fgets($file_in);           //从文件中读出一行,放到变量$line中,
    $occur  = strpos($line, 'bcd');     //把'bcd'在$line中出现的位置保存到$occur中,
    if($occur !== false){                    //如果值不是逻辑值false,则:
        $result = $line;                     //得到结果,
        break;                               //退出循环
    }
}
echo $result;                                //输出结果
fclose($file_in);                            //关闭文件


?>


确实直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容
但是substr()来截取字符串也不健全啊那如果bcd对应的是123456有6个数那有怎么办!所以还是用这个方法比较好点
虽然逻辑不复杂但半夜了思考这个问题有点累  望采纳~.~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯