首先fopen读取TXT文件,获取一个文件指针,然后fgets获取一行,再fgets继续读取下一行
专注于为中小企业提供网站设计、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业遂溪免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
官方例子:
?php
$f = fopen ("fgetstest.php", "r");
$ln= 0;
while (! feof ($f)) {
$line= fgets ($f);
++$ln;
printf ("%2d: ", $ln);
if ($line===FALSE) print ("FALSE\n");
else print ($line);
}
fclose ($f);
这个前提是你的$f这个文件指针不能关闭,如果你想在不同请求的情况下实现,那就要吧$f做全局存储了,看看存session可否(我没做过,不确定,你试试看)
如果直接使用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);
$content = file("test.txt");
$randContent = array_rand($content,5);
echo implode("br /",$randContent);
第一行使用file把把整个文件读入一个数组中
第二行使用array_rand在数组中随机取出5个元素
第三行将取出的5个数组中间添加br /标签并打印出来
file
把整个文件读入一个数组中
file ( string $filename , int $flags = 0 , resource $context = ? ) : array
array_rand
从数组中随机取出一个或多个随机键
array_rand ( array $array , int $num = 1 ) : int|string|array
implode
将一个一维数组的值转化为字符串
implode ( string $glue , array $pieces ) : string
form action='' method="post"
输入字母:
input type="text" name="cs"
input type="submit"
/form
?php
//获取post值
$cs = empty($_POST['cs']) ? "" : $_POST['cs'];
//post值为空直接返回
if($cs==""){return '';}
//打开diqu.txt文件资源
$file = fopen("diqu.txt", "r") or exit("未找到文件!");
//逐行查找post传递的字符
while(!feof($file))
{
//如果找到post传递的字符就返回该行的值
if($val = strstr(fgets($file),$cs)){echo str_replace($cs,'',$val);return "";}
}
//关闭文件
fclose($file);
?