如果直接使用file_get_contents來讀取文件,那么在文件很大的時(shí)候會(huì)很占內(nèi)容,比如這個(gè)文件有1GB的時(shí)候。
長(zhǎng)順網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),長(zhǎng)順網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為長(zhǎng)順1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的長(zhǎng)順做網(wǎng)站的公司定做!
這個(gè)時(shí)候使用傳統(tǒng)的文件操作方式就好的多,因?yàn)槭遣檎衣?,逐行讀取匹配應(yīng)該也是可以的,下面是我的一個(gè)建議,不知道是否滿足你的要求,可以看下:
//
需要查找的內(nèi)容
$search
=
'bcd';
//
打開文件
$res
=
fopen('a.txt',
'r');
while
($line
=
fgets($res,
1024))
{
//
根據(jù)規(guī)則查找
if
(strpos($line,
$search)
===
0)
{
//
根據(jù)既定規(guī)則取得需要的數(shù)據(jù)
echo
substr($line,
4,
-1);
//
這里就是你想得到的
break;
}
}
//
關(guān)閉文件
fclose($res);
PHP隨機(jī)讀取TXT文件的某一行,基本思路是這樣的:獲得總行數(shù)、產(chǎn)生隨機(jī)數(shù)、獲得隨機(jī)行,例子代碼如下:
?php
$f='1.txt';//文件名
$a=file($f);//把文件的所有內(nèi)容獲取到數(shù)組里面
$n=count($a);//獲得總行數(shù)
$rnd=rand(0,$n);//產(chǎn)生隨機(jī)行號(hào)
$rnd_line=$a[$rnd];//獲得隨機(jī)行
echo?"$rnd?/?$n?:?$rnd_line?\n";?//顯示結(jié)果
?
以上程序在我的電腦上執(zhí)行幾次的結(jié)果如下:
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=
首先聲明,我下面的代碼是以你的那十行數(shù)據(jù)為基礎(chǔ),測(cè)試通過的。但是我得把它的局限說一下。
編碼的時(shí)候,我是根據(jù)你的每一行的規(guī)律來的。每行用6個(gè)數(shù)據(jù)分隔7個(gè)部分的內(nèi)容,所以,每個(gè)部分不能再有逗號(hào)了(當(dāng)然這個(gè)危險(xiǎn)主要來自標(biāo)題,不過我看你標(biāo)題分隔的時(shí)候都是空格或!)
你直接運(yùn)行吧!
?PHP
$file_name="data.txt"; //假設(shè)你的數(shù)據(jù)是存在這個(gè)文件中的
$fp=fopen($file_name,'r');
while(!feof($fp)) //文件全部要讀完
{
$buffer=fgets($fp,1024); //獲得一行
$period = explode(",",$buffer); //以逗號(hào)分隔分行內(nèi)容
if($period[6]!=1){ //找到第7部分的內(nèi)容,如果不是1,就輸出當(dāng)然這個(gè)也是開關(guān),你可以設(shè)置為1時(shí)輸出
echo $buffer."br";
}
}
fclose($fp); //關(guān)閉文件流
?