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;
}
?>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-02-26
使用循环,下面的语句把需要的内容提取到变量$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小白,好多东西半懂不懂,很感谢你为我解答,你看我这样写对吗?

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网