PHP讀取文件的多種方法


1.傳統的方法 fopen, fclose

      feof:file、end of file

      例子:

$file_handle = fopen("c:\\myfile.txt", "r");//使用fopen打開與文件的連接
while (!feof($file_handle)) {  //使用feof判斷是否到達文件末尾
   $line = fgets($file_handle); //使用fgets按行讀取文件內容
   echo $line;
}
fclose($file_handle); //最后使用fclose關閉與文件的連接

  過程: 1. fopen -> feof -> fgets -> fclose

                   打開             讀取             關閉

      注意:如果是從二進制文件讀取以獲得跨平台兼容性,則應當將 r 更改為 rb

2. 以fgetss取代fgets

      fgetss() 函數從打開的文件中讀取一行並過濾掉 HTML 和 PHP 標記。

      與 fgets() 相同,不同的是 fgetss 嘗試從讀取的文本中去掉任何 HTML 和 PHP 標記。

      例子:

<?php
     $file = fopen("test.htm","r");
     echo fgetss($file);
     fclose($file);

?> 

  當然也可以通過傳遞第三個參數來指定哪些標記是允許輸出的:

<?php

$file = fopen("test.htm","r");
echo fgetss($file,1024,"<p>,<b>");//<p>和<b>標記將不會被過濾
fclose($file);

?>  

         詳細信息參考:http://www.w3school.com.cn/php/func_filesystem_fgetss.asp

3. 以二進制讀取 fread取代fgets

      同樣需要打開文件連接 fopen    

$fh = fopen("c:\\myfile.txt", "rb");//rb是兼容二進制讀取
$data = fread($fh, filesize("c:\\myfile.txt"));
fclose($fh);

  特別注意:fread()雖然可以通過第二個參數來指定讀取文件的長度,但最長只能讀取8192個字節(8kb)

                    如果文件長度超過8k則需要循環讀取

4.將整個文件讀入到一個字符串的方法 file_get_contents()

      詳細可見:PHP的file_get_contents()方法,將整個文件讀入字符串中

5.將整個文件讀入到一個數組中返回 file()  

<?php
     print_r(file("c:\\abc.txt"));//結果將abc.txt文件的每一行當成數組的每個元素返回
?>

  

6. 非線性文件處理 fseek

         以上函數只允許順序讀取文件,當需要來回跳轉到文件的不同部分。這時就得用 fseek 。
         5.1. fseek($fh, 0); //跳轉回文件的開頭

         5.2. fseek($fh, 1024);//返回前1024字節前面


         從 PHP V4.0 新增功能:
         5.3. fseek($fh, 100, SEEK_CUR);//從當前位置向前跳轉 100 個字節

         5.4. fseek($fh, -100, SEEK_CUR);//向后跳轉 100 個字節

         5.5. fseek($fh, -100, SEEK_END);//向后跳轉至文件末尾前 100 個字節處

 

參考:http://www.ibm.com/developerworks/cn/opensource/os-php-readfiles/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM