首先声明,我下面的代码是以你的那十行数据为基础,测试通过的。但是我得把它的局限说一下。
10多年的北戴河网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整北戴河建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“北戴河网站设计”,“北戴河网站推广”以来,每个客户项目都认真落实执行。
编码的时候,我是根据你的每一行的规律来的。每行用6个数据分隔7个部分的内容,所以,每个部分不能再有逗号了(当然这个危险主要来自标题,不过我看你标题分隔的时候都是空格或!)
你直接运行吧!
?PHP
$file_name="data.txt"; //假设你的数据是存在这个文件中的
$fp=fopen($file_name,'r');
while(!feof($fp)) //文件全部要读完
{
$buffer=fgets($fp,1024); //获得一行
$period = explode(",",$buffer); //以逗号分隔分行内容
if($period[6]!=1){ //找到第7部分的内容,如果不是1,就输出当然这个也是开关,你可以设置为1时输出
echo $buffer."br";
}
}
fclose($fp); //关闭文件流
?
PHP随机读取TXT文件的某一行,基本思路是这样的:获得总行数、产生随机数、获得随机行,例子代码如下:
?php
$f='1.txt';//文件名
$a=file($f);//把文件的所有内容获取到数组里面
$n=count($a);//获得总行数
$rnd=rand(0,$n);//产生随机行号
$rnd_line=$a[$rnd];//获得随机行
echo "$rnd / $n : $rnd_line \n"; //显示结果
?
以上程序在我的电脑上执行几次的结果如下:
E:\TEMP\文件\expa.php
1 / 8 : [00:05.33]你拿什么来爱我2
E:\TEMP\文件\expa.php
3 / 8 : acfp6o7ib----803sb7rmvz----1525175080=
E:\TEMP\文件\expa.php
1 / 8 : [00:05.33]你拿什么来爱我2
E:\TEMP\文件\expa.php
1 / 8 : [00:05.33]你拿什么来爱我2
E:\TEMP\文件\expa.php
5 / 8 : bxi2jw97----0vaf3bw17s----1525184793=
?php
$c = getLine('./a.txt', 10); // 读取a.txt文件第10行内容
echo $c;
/**
* 获取指定行内容
*
* @param $file 文件路径
* @param $line 行数
* @param $length 指定行返回内容长度
*/
function getLine($file, $line, $length = 4096){
$returnTxt = null; // 初始化返回
$i = 1; // 行数
$handle = @fopen($file, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, $length);
if($line == $i) $returnTxt = $buffer;
$i++;
}
fclose($handle);
}
return $returnTxt;
}
$myfile = fopen("web.txt", "r") ;
echo fgets($myfile);//fgets为读取一行,行本质是段落
fclose($myfile);
如果直接使用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);
?php
$c = getLine('./a.txt', 10); // 读取a.txt文件第10行内容
echo $c;
/**
* 获取指定行内容
*
* @param $file 文件路径
* @param $line 行数
* @param $length 指定行返回内容长度
*/
function getLine($file, $line, $length = 4096){
$returnTxt = null; // 初始化返回
$i = 1; // 行数
$handle = @fopen($file, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, $length);
if($line == $i) $returnTxt = $buffer;
$i++;
}
fclose($handle);
}
return $returnTxt;
}