先演示下效果
讀取一個txt文本的時候會發現結尾會多出兩個字符,是因為有換行符的存在,在windows裡面換行符的表示方法為 \r\n
例如我們寫入一個字符串到txt文件:
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str);
fclose($fp1);
----------------------------------------
顯示結果:
123
----------------------------------------
然後我們再測試寫入兩次到文件
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str.$str);
fclose($fp1);
----------------------------------------
顯示結果:
123123
----------------------------------------
這裡寫入的時候並非我們要的結果,我們想在寫入123後要換行那麼需要加入一個換行符,windows下面的換行符為: \r\n
測試代碼:
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);
-------------------------------------------顯示結果
123
123
這裡是空著的一行起始點,雖然看不到但是鼠標指針可以點這裡寫入字符串。
----------------------------------------
在我們處理文本文件的時候只要是換行的都有換行符!
所以我們要加以過濾後才能使用一行的字符串!
測試代碼:
我們讀入文件格式如:
---------------------
123
1234
--------------------
的文件
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);
$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
$buffer1=fgets($fp1);
echo strlen($buffer1);
echo "<br />";
}
fclose($fp1);
------------------------
顯示的結果:
5
5
0
證明了字符串123的長度是5而不是3,因為換行符的存在才導致的,那麼我們在讀取的基礎上去掉最後兩個字符即可!
代碼:
$f1="t1.txt";
$str="123";
$fp1=fopen($f1,"w");
fwrite($fp1,$str."\r\n".$str."\r\n");
fclose($fp1);
$f1="t1.txt";
$fp1=fopen($f1,"r");
while(!feof($fp1)){
$buffer1=fgets($fp1);
//第一種保守的方法,先計算此時獲得的字符串長度,然後截取第一個字符到倒數第二個字符截止就是我們想要的字符串了!
$buffer1_a=substr($buffer1,0,strlen($buffer1)-2);
//第二種方法是直接采用substr函數的特殊性,直接截取0到-2之間的字符串
$buffer1_b=substr($buffer1,0,-2);
}
fclose($fp1);
這樣就可以正常的使用代碼讀取想要的字符串了
摘自 cyuyan112233的專欄