php如何读取文本指定的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php如何读取文本指定的内容?相关的知识,希望对你有一定的参考价值。

比如说我的文本叫a.txt
文本里的内容是这样的
12345---45678
12346---45679
12347---45671

要怎么读取12346---后面的值?

php读取文件内容:
-----第一种方法-----fread()--------
<?php
$file_path = "test.txt";
if(file_exists($file_path))
$fp = fopen($file_path,"r");
$str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
echo $str = str_replace("\r\n","<br />",$str);

?>

--------第二种方法------------
<?php
$file_path = "test.txt";
if(file_exists($file_path))
$str = file_get_contents($file_path);//将整个文件内容读入到一个字符串中
$str = str_replace("\r\n","<br />",$str);
echo $str;

?>
-----第三种方法------------
<?php
$file_path = "test.txt";
if(file_exists($file_path))
$fp = fopen($file_path,"r");
$str = "";
$buffer = 1024;//每次读取 1024 字节
while(!feof($fp))//循环读取,直至读取完整个文件
$str .= fread($fp,$buffer);

$str = str_replace("\r\n","<br />",$str);
echo $str;

?>
-------第四种方法--------------
<?php
$file_path = "test.txt";
if(file_exists($file_path))
$file_arr = file($file_path);
for($i=0;$i<count($file_arr);$i++)//逐行读取文件内容
echo $file_arr[$i]."<br />";

/*
foreach($file_arr as $value)
echo $value."<br />";
*/

?>
----第五种方法--------------------
<?php
$file_path = "test.txt";
if(file_exists($file_path))
$fp = fopen($file_path,"r");
$str ="";
while(!feof($fp))
$str .= fgets($fp);//逐行读取。如果fgets不写length参数,默认是读取1k。

$str = str_replace("\r\n","<br />",$str);
echo $str;

?>
参考技术A 使用循环,下面的语句把需要的内容提取到变量$x中:
$x='';
foreach (file('a.txt') as $line)
if (preg_match('/^12346---(.*?)$/',$line,$reg))
$x=$reg[1];
break;

追问

取前面的值用这个方法可以吗?

追答

怎么取都可以,主要理解下面的正则表达式,自行修改即可:
if (preg_match('/^12346---(.*?)$/',$line,$reg))

追问

大佬,您的方法是对的但是读取大文件不行,有解决的办法吗?

追答

是的,你说的非常正确,如果文件巨大,就不能使用下面这样的结构,因为file会把所有文件内容一次性读入内存中:
foreach (file('a.txt') as $line
...

我只是不明白,这么高深的道理都懂,下面的解决套路怎么不知道呢,我唯一的理解就是在考我,:
$fp=fopen('a.txt','r');
while (($line = fgets($fp)) !== false)
...


fclose($fp);

追问

大佬,你是个好人,因为我是个PHP小白,好多东西半懂不懂,很感谢你为我解答,你看我这样写对吗?

本回答被提问者和网友采纳

fortran如何读入文本文件中的某行的指定部分

参考技术A 文本文件只能单向操作(读或者写),不能同时读写。你可以把每个文件读入串数组中,再根据你的需要写入新的文本文件中。

以上是关于php如何读取文本指定的内容?的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本命令如何 读取文本指定位置内容 写入另一文本指定位置并替换原内容

在LINUX 下 使用PHP 修改文本文件

vbs读取指定的文本内容

js读取文本,如何把读取到的某些内容替换成特定内容?

fortran如何读入文本文件中的某行的指定部分

请教如何用按键精灵把已复制的文本内容粘贴到excel指定位置,谢谢!!