php一行一行讀取文件
① php讀取文件規則,只能一行一行讀取不能一行中間隔開讀取
<?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;
}
② php逐行讀取文件,逐行修改文件,刪除指定行
修改和刪除指定行,我們一般用file將文件內容讀取到數組中,根據數字索引比較容易修改,但是你要求用文件指針,這個比較麻煩,不管你用的是filesystem的函數還是spl類函數,都不可避免一個問題,對一個文件流操作,最多替換流中間的某一段內容,不可能實現插入,又不是c語言的鏈表,
//修改第二行內容
$f=fopen('test.txt','r+');
$i=1;
while(!feof($f)){
if($i==2){
fseek($f,0,SEEK_CUR);
fwrite($f,'aad');//這里的修改是替換形式,如果修改後這一行的長度比原來短,那麼可以用空格填充到原來長度,這樣實現修改,而且不影響後面的內容,但是修改後的比原來長就麻煩了,
break;
}
fgets($f);
$i++;
}
fclose($f);
//刪除行同修改行一樣,只不過是將原來行替換為同等長度的空格串
$f=fopen('test.txt','r+');
$j=1;
while(!feof($f)){
if($j==2){
$row=fgets($f);
$len=strlen($row);
echoftell($f)-$len."<br>";
fseek($f,ftell($f)-$len);
fwrite($f,str_pad('',$len,''));
break;
}
fgets($f);
$j++;
}
fclose($f);
③ php逐行操作文件
如果你的文件不大,就應該使用file,把所有文件內容讀入數組,對數組進行處理(+1),然後寫會文件。
如果文件較大,或者BT老師不讓用數組,那麼就只有一行一行的讀文件,每讀一行處理一行,然後寫入一個臨時文件,最後關閉兩個文件,刪除舊文件,再把臨時文件更名為舊的,大概的過程如下:
<?php
$f='a.txt';//需要處理的文件名
$f1=fopen($f,'r');
$f2=fopen($f.'.tmp','w');
while(!feof($f1)){
$s=fgets($f1);
$s++;
fputs($f2,$s);
}
fclose($f2);
fclose($f1);
rename($f.'.tmp',$f);
?>
④ php一行一行的讀一個文件時如何判斷得到的為空行啊
將得到的每行 用 strlen()函數去計算它的長度 如為0 即為 空行.
⑤ php逐行讀取txt文件內容,並把內容放到輸入框里,一行內容對應一個輸入框
<?php
header("Content-type:text/html;charset=utf-8");
$f_open = fopen('aaa.txt','w+'); //打開文件
if(isset($_POST['submit'])){ //判斷,如果點了提交按鈕則執行以下代碼
fwrite($f_open,$_POST['txt']); //寫入文件,內容為文本域傳過來的值
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
textarea{
width: 300px;
height: 20px;
}
</style>
</head>
<body>
<form method="post" action="a.php">
<textarea name="txt">
<?php
$aaa = readfile('aaa.txt'); //讀取aaa.txt的內容
?>
</textarea>
<input type="submit" name="submit">
</form>
</body>
</html>
<?php
fclose($f_open); //關閉文件
?>
⑥ PHP如何從文本中提取指定行數內容
PHP如何從文本中提取指定行數內容?在php中,通過fopen()方法打開文件,在while中使用fgets()方法獲取每行數據,每讀到一行,就使用標識記錄一次,通過累計記錄數計算出文件的行數。下面介紹實現的過程。
方法/步驟分步閱讀
1
/7
新建一個php文件,命名為handle.php,用於講解PHP怎麼獲取文件的行數。
2
/7
新建一個文本文件,命名為test.txt,在裡面輸入四行數據,分別是aaa,bbb,ccc,ddd。
3
/7
在handle.php文件里,使用fopen方法以只讀方式打開test.txt文件,代碼如下:
4
/7
在handle.php文件里,創建一個初始變數i,用於保存文件內容的行數。
5
/7
通過while()語句,使用fgets方法從文件指針中讀取一行,每讀取一行,變數i自加一,直到到達文件末尾停止while的執行。
註:!feof($handle),函數檢測是否已到達文件末尾。
6
/7
最後,使用echo輸出文件的行數,並通過fclose關閉文件資源。代碼如下:
7
/7
在瀏覽器執行handle.php文件,查看輸出的行數,執行的結果為4行。
內容僅供參考並受版權保護
⑦ PHP里如何讀取文件的指定一行
<?php
$c=getLine('./a.txt',10);//讀取a.txt文件第10行內容
echo$c;
/**
*獲取指定行內容
*
*@param$file文件路徑
*@param$line行數
*@param$length指定行返回內容長度
*/
functiongetLine($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;
}
⑧ php怎麼一行一行的讀取文件
$myfile=fopen("web.txt","r");
echofgets($myfile);//fgets為讀取一行,行本質是段落
fclose($myfile);
⑨ php讀取逐行讀取文件
換個1mb的文本它肯定有空格換行,具體操作如下代碼:
$file = file("welcome.txt");
foreach($file as &$line) echo $line.'<br />';
這個更方便, file()直接把文本按行轉換成數組
fgets如果沒指定第二參數,將直接讀取到緩存結束為止, 其實它不以換行來循環的,它的第二參數也是限制每次讀取的字元個數而已。
⑩ 如何用php讀取txt文件裡面的單行數據
首先聲明,我下面的代碼是以你的那十行數據為基礎,測試通過的。但是我得把它的局限說一下。
編碼的時候,我是根據你的每一行的規律來的。每行用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); //關閉文件流
?>