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:使用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);
这个时候使用传统的文件操作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:
// 需要查找的内容
$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个数那有怎么办!所以还是用这个方法比较好点
虽然逻辑不复杂但半夜了思考这个问题有点累 望采纳~.~
$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个数那有怎么办!所以还是用这个方法比较好点
虽然逻辑不复杂但半夜了思考这个问题有点累 望采纳~.~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯