讀取文件LOGIN

讀取文件

readfile讀取檔案

那要如何讀取一個檔案呢?我們先學一個函數。

int readfile ( string $檔名)

#功能:傳入一個檔案路徑,輸出一個檔案。

下面的這一段程式碼中,只要傳入檔案名稱或指定的檔案路徑就把檔案讀取出來了。

<?php
    //linux类的读了方式
    readfile("/home/paul/test.txt");
    //windows类的读取方式
    readfile("c:\boot.ini");
?>

注意:上面的程式碼中windows的斜線是\斜線,可能會轉義掉一些字元。因此,我們寫的時候寫上兩條斜線。

file_get_contents開啟檔案

上面的是單純打檔案就直接輸出了,有沒有開啟檔案後,能夠賦值給一個變數的操作方式呢。

PHP當然會提供這種方式。這個方式就是PHP開啟檔案並回傳內容的方式之一,我們來看看函數:

string file_get_contents ( string filename)

功能:傳入一個檔案或檔案路徑,開啟這個文件傳回文件的內容。文件的內容是一個字串。

<?php
 
    $filename = 'NoAlike.txt';
 
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

上面的程式碼,就開啟了一個文件,並且將文件當中的內容進行了輸出。

我們來針對之前的知識把程式碼進行一下擴充。用一用之前的知識點。

<?php
    //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件
     $filename = 'NoAlike.txt';
 
 
    //打开这个文件,将文件内容赋值给$filestring
    $filestring = file_get_contents($filename);
 
    //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
    $filearray = explode("\n", $filestring);
 
    //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
 
        //用的单引号,单引号不解释变量进行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

上面,我們就把之前所學的知識進行了組合。

fopen、fread、fclose操作讀取檔案

上面file_get_contents開啟檔案的方式簡單、粗暴。下面的

resource fopen ( string $檔名, string 模式)

string fread ( resource $操作資源, int 讀取長度)

bool fclose ( resource $操作資源)

透過上述的函數我們來說明資源型別的通常操作方式:

1.    開啟資源

2.    使用相關函數進行動作

#3.    關閉資源

fopen函數 fopen函數的功能是開啟文件,參數主要有兩個:

1.    文件開啟的路徑

2.    開啟檔案的模式

返回類型是一個資源類型,我們第一次遇到了之前基礎類型的時候所講到的資源類型。
資源類型需要其他的函數來操作這個資源。所有的資源有開啟就要有關閉。

fread函數 函數的功能的功能是讀取開啟的檔案資源。讀取指定長度的檔案資源,讀取一部分向後移動一部分。至到文件結尾。

fclose函數 fclose函數的功能是關閉資源。資源有開啟就有關閉。

了解完函數,後兩個函數比較簡單。而fopen函數的模式到底是什麼,fopen的模式有下面幾個,我們來講一下fopen的模式:


QQ截图20161009101723.png

   


接下來,我們只來學習r模式,下結課我們在將寫入的時候再來講講其他幾個模式。

我們先會讀取檔案了,才能很好的掌握寫入檔案。

1.開啟檔案

<?php
    //你可以创建一个NoAlike.txt,以只读模式打开
    $fp = fopen('NoAlike.txt', "r");
 
 
    //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
    var_dump($fp);
?>

2.讀取檔案

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打开一个文件类型后,读取长度
    $contents = fread($handle, 1024);
?>

3.關閉檔案

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>

其他注意事項:


QQ截图20161009101707.png


使用範例:

<?php
 $fp = fopen($filename, 'ab');
 $contents = fwrite($fp, '可爱的很\n哟');
 fclose($fp);
 echo $contents;
 ?>

說明:
實驗無法讓肉眼看到這個實驗效果。大家記住有這個特色即可。

Windows 下提供了一個文字轉換標記('t')可以透明地將 \n 轉換為 \r\n。
與此對應也可以使用 'b' 來強制使用二進位模式,這樣就不會轉換資料。要使用這些標記,要么用 'b' 或用 't' 作為 mode 參數的最後一個字元。

 


下一節
<?php //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件 $filename = 'NoAlike.txt'; //打开这个文件,将文件内容赋值给$filestring $filestring = file_get_contents($filename); //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组 $filearray = explode("\n", $filestring); //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。 while (list($key, $val) = each($filearray)) { ++$key; $val = trim($val); //用的单引号,单引号不解释变量进行了拼接而已 print 'Line' . $key .':'. $val.'<br />'; } ?>
章節課件