首先fopen讀取TXT文件,獲取一個文件指針,然后fgets獲取一行,再fgets繼續(xù)讀取下一行
專注于為中小企業(yè)提供網(wǎng)站設計、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)遂溪免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。
官方例子:
?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這個文件指針不能關閉,如果你想在不同請求的情況下實現(xiàn),那就要吧$f做全局存儲了,看看存session可否(我沒做過,不確定,你試試看)
如果直接使用file_get_contents來讀取文件,那么在文件很大的時候會很占內(nèi)容,比如這個文件有1GB的時候。
這個時候使用傳統(tǒng)的文件操作方式就好的多,因為是查找嘛,逐行讀取匹配應該也是可以的,下面是我的一個建議,不知道是否滿足你的要求,可以看下:
//
需要查找的內(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;
}
}
//
關閉文件
fclose($res);
$content?=?file("test.txt");
$randContent?=?array_rand($content,5);
echo?implode("br?/",$randContent);
第一行使用file把把整個文件讀入一個數(shù)組中
第二行使用array_rand在數(shù)組中隨機取出5個元素
第三行將取出的5個數(shù)組中間添加br?/標簽并打印出來
file
把整個文件讀入一個數(shù)組中
file?(?string?$filename?,?int?$flags?=?0?,?resource?$context?=???)?:?array
array_rand
從數(shù)組中隨機取出一個或多個隨機鍵
array_rand?(?array?$array?,?int?$num?=?1?)?:?int|string|array
implode
將一個一維數(shù)組的值轉化為字符串
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);
?