PHP 第八週函式學習筆記

zerocoder發表於2020-07-30

fileinode()

作用

fileinode() 函式返回指定檔案的 inode 編號。
如果成功,該函式返回指定檔案的 inode 編號。如果失敗,則返回 FALSE

用法

fileinode(filename)

測試案例

<?php
    echo fileinode("test.txt");
?>

filemtime()

作用

filemtime() 函式返回檔案內容的上次修改時間。
如果成功,該函式將以 Unix 時間戳形式返回檔案內容的上次修改時間。如果失敗,則返回 FALSE

用法

filemtime(filename)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
echo filemtime("test.txt");
echo "<br />";
echo "Last modified: ".date("F d Y H:i:s.",filemtime("test.txt"));
?>

結果

1139919766
Last modified: February 14 2006 13:22:46.

fileowner()

作用

fileowner() 函式返回指定檔案的使用者 ID(所有者)。

如果成功,該函式返回使用者 ID。如果失敗,則返回 FALSE

用法

fileowner(filename)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

註釋:該函式不能在 Windows 系統上執行。

提示:請使用 posix_getpwuid() 來把使用者 ID 轉換為使用者名稱。

測試案例

<?php
echo fileowner("test.txt");
?>

fileperms()

作用

fileperms() 函式返回檔案或目錄的許可權。
如果成功,該函式以數字形式返回許可權。如果失敗,則返回 FALSE

用法

fileperms(filename)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

註釋:該函式不能在 Windows 系統上執行。

提示:請使用 posix_getpwuid() 來把使用者 ID 轉換為使用者名稱。

測試案例

<?php
echo fileperms("test.txt");
?>

結果

33206

filesize()

作用

filesize() 函式返回指定檔案的大小。
如果成功,該函式返回檔案大小的位元組數。如果失敗,則返回 FALSE

用法

filesize(filename)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
echo filesize("test.txt");
?>

結果

20

filetype()

作用

filetype() 函式返回指定檔案或目錄的型別。

如果成功,該函式返回 7 種可能的值之一。如果失敗,則返回 FALSE

可能的返回值:

  • fifo
  • char
  • dir
  • block
  • link
  • file
  • unknown

用法

filetype(filename)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
echo filetype("test.txt");
?>

結果

file

flock()

作用

flock() 函式鎖定或釋放檔案。
如果成功,該函式返回 TRUE。如果失敗,則返回 FALSE

用法

flock(file,lock,block)
lock    必需。規定要使用哪種鎖定型別。
        可能的值:
            LOCK_SH - 共享鎖定(讀取的程式)。允許其他程式訪問該檔案。
            LOCK_EX - 獨佔鎖定(寫入的程式)。防止其他程式訪問該檔案。
            LOCK_UN - 釋放一個共享鎖定或獨佔鎖定
            LOCK_NB - 鎖定的情況下避免阻塞其他程式。
block    可選。若設定為 1,則當進行鎖定時阻塞其他程式。

提示和註釋

註釋:這些鎖僅在當前的 PHP 程式中使用。如果許可權允許,其他的程式可修改或刪除一個 PHP-locked 檔案。
註釋:flock() 在 Windows 下具有強制性。
提示:可以通過 fclose() 來釋放鎖定操作,指令碼執行完成時會自動呼叫。

測試案例

<?php

$file = fopen("test.txt","w+");

// exclusive lock
if (flock($file,LOCK_EX)) {
    fwrite($file,"Write something");
    // release lock
    flock($file,LOCK_UN);
} else {
    echo "Error locking file!";
}

fclose($file);
?>

fnmatch()

作用

fnmatch() 函式根據指定的模式來匹配檔名或字串。

用法

fnmatch(pattern,string,flags)
pattern    必需。規定要檢索的模式。

提示和註釋

註釋:該函式無法在 Windows 平臺上使用。

測試案例

<?php
$txt = "My car is darkgrey";
if (fnmatch("*gr[ae]y",$txt))
{
    echo "some form of gray ...";
} else {
    echo "NO";
}

結果

some form of gray ...

fopen()

作用

fopen() 函式開啟一個檔案或 URL。
如果 fopen() 失敗,它將返回 FALSE 並附帶錯誤資訊。您可以通過在函式名前面新增一個 '@' 來隱藏錯誤輸出。

用法

fopen(filename,mode,include_path,context)
mode    必需。規定您請求到該檔案/流的訪問型別。
        可能的值:
        "r" (只讀方式開啟,將檔案指標指向檔案頭)
        "r+" (讀寫方式開啟,將檔案指標指向檔案頭)
        "w" (寫入方式開啟,清除檔案內容,如果檔案不存在則嘗試建立之)
        "w+" (讀寫方式開啟,清除檔案內容,如果檔案不存在則嘗試建立之)
        "a" (寫入方式開啟,將檔案指標指向檔案末尾進行寫入,如果檔案不存在則嘗試建立之)
        "a+" (讀寫方式開啟,通過將檔案指標指向檔案末尾進行寫入來儲存檔案內容)
        "x" (建立一個新的檔案並以寫入方式開啟,如果檔案已存在則返回 FALSE 和一個錯誤)
        "x+" (建立一個新的檔案並以讀寫方式開啟,如果檔案已存在則返回 FALSE 和一個錯誤)
include_path    可選。如果您還想在 include_path(在 php.ini 中)中搜尋檔案的話,請設定該引數為 '1'

提示和註釋

註釋:當書寫一個文字檔案時,請確保您使用了正確的行結束符!在 Unix 系統中,行結束符為 \n;在 Windows 系統中,行結束符為 \r\n;在 Macintosh 系統中,行結束符為 \r。Windows 系統中提供了一個文字轉換標記 "t" ,可以透明地將 \n 轉換為 \r\n。您還可以使用 "b" 來強制使用二進位制模式,這樣就不會轉換資料。為了使用這些標記,請使用 "b" 或者 "t" 來作為 mode 引數的最後一個字元。

測試案例

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>

fpassthru()

作用

fpassthru() 函式從開啟檔案的當前位置開始讀取所有資料,直到檔案末尾(EOF),並向輸出緩衝寫結果。
該函式返回傳遞的字元數,如果失敗則返回 FALSE

用法

fpassthru(file)

提示和註釋

註釋:當在 Windows 系統的二進位制檔案中使用 fpassthru() 函式時,請牢記,必須以二進位制的模式開啟檔案。
提示:如果您已經向檔案寫入資料,就必須呼叫 rewind() 來將檔案指標指向檔案頭。
提示:如果您只想將檔案的內容輸出到輸出緩衝,而不對它進行修改,請使用 readfile() 函式代替,這樣可以省去 fopen() 呼叫。

測試案例

<?php
$file = fopen("test.txt","r");

// Read first line
fgets($file);

// Send rest of the file to the output buffer
echo fpassthru($file);

fclose($file);
?>

結果

There are three lines in this file.
This is the last line.59

fputcsv()

作用

fputcsv() 函式將行格式化為 CSV 並寫入一個開啟的檔案中。
該函式返回寫入字串的長度。如果失敗,則返回 FALSE

用法

fputcsv(file,fields,seperator,enclosure)
file    必需。規定要寫入的開啟檔案。
fields    必需。規定要從中獲得資料的陣列。
separator    可選。設定欄位分界符(只允許一個字元),預設值為逗號( , )。
enclosure    可選。設定欄位環繞符(只允許一個字元),預設值為雙引號( " )。

測試案例

<?php
$list = array
(
    "Peter,Griffin,Oslo,Norway",
    "Glenn,Quagmire,Oslo,Norway",
);

$file = fopen("contacts.csv","w");

foreach ($list as $line)
{
    fputcsv($file,split(',',$line));
}

fclose($file); ?>

fputs()

作用

fputs() 函式將內容寫入一個開啟的檔案中。
函式會在到達指定長度或讀到檔案末尾(EOF)時(以先到者為準),停止執行。
如果函式成功執行,則返回寫入的位元組數。如果失敗,則返回 FALSE=
fputs() 函式是 fwrite() 函式的別名。

用法

fputs(file,string,length)
file    必需。規定要寫入的開啟檔案。
string    必需。規定要寫入開啟檔案的字串。
length    可選。規定要寫入的最大位元組數。

提示和註釋

該函式是二進位制安全的。(意思是二進位制資料(如影像)和字元資料都可以使用此函式寫入。)

測試案例

<?php
$file = fopen("test.txt","w");
echo fputs($file,"Hello World. Testing!");
fclose($file);
?>

結果

21

fread()

作用

fread() 函式讀取開啟的檔案。
函式會在到達指定長度或讀到檔案末尾(EOF)時(以先到者為準),停止執行。
該函式返回讀取的字串,如果失敗則返回 FALSE

用法

string fread ( resource $handle , int $length )
handle    檔案系統指標,是典型地由 fopen() 建立的 resource(資源)。
length    必需。規定要讀取的最大位元組數。

提示和註釋

該函式是二進位制安全的。(意思是二進位制資料(如影像)和字元資料都可以使用此函式寫入。)

測試案例

<?php
// 從檔案中讀取 10 個位元組
$file = fopen("test.txt","r");
$contents = fread($file,"10");
fclose($file);

// 讀取整個檔案
$file = fopen("test.txt","r");
$contents = fread($file,filesize("test.txt"));
fclose($file);
?>

fscanf()

作用

fscanf() 函式根據指定的格式對來自開啟的檔案的輸入進行解析。

用法

fscanf(file,format,mixed)

format    必需。規定格式。
        可能的格式值:
            %% - 返回一個百分號 %
            %b - 二進位制數
            %c - ASCII 值對應的字元
            %d - 包含正負號的十進位制數
            %e - 科學計數法(例如:1.2e+2%u - 不包含正負號的十進位制數
            %f - 浮點數(本地屬性)
            %F - 浮點數(非本地屬性)
            %o - 十進位制數
            %s - 字串
            %x - 十六進位制數(小寫字母)
            %X - 十六進位制數(大寫字母)
            附加的格式值。必需放置在 % 和字母之間(例如 %.2f):

            + (在數字前面加上 +- 來定義數字的正負性。預設情況下,只有負數才做標記,正數不做標記)
            ' (規定使用什麼作為填充,預設是空格。它必須與寬度指定器一起使用。例如:%'x20s(使用 "x" 作為填充))
            - (左調整變數值)
            [0-9] (規定變數值的最小寬度)
            .[0-9] (規定小數位數或最大字串長度)
            註釋:如果使用多個上述的格式值,它們必須按照上面的順序進行使用,不能打亂。

提示和註釋

註釋:格式字串中的任何空白會與輸入流中的任何空白匹配。這意味著格式字串中的製表符 \t 也會與輸入流中的一個單一的空格字元匹配。

fseek()

作用

fseek() 函式在開啟的檔案中定位。
該函式把檔案指標從當前位置向前或向後移動到新的位置,新位置從檔案頭開始以位元組數度量。
如果成功該函式返回 0,如果失敗則返回 -1。請注意,移動到檔案末尾(EOF)之後的位置不會產生錯誤。

用法

fseek(file,offset,whence)
file    必需。規定要在其中定位的檔案。
offset    必需。規定新的位置(從檔案頭開始以位元組數度量)。
whence    可選。(PHP 4 中新增的)。 可能的值:
            SEEK_SET - 設定位置等於 offset。預設。
            SEEK_CUR - 設定位置為當前位置加上 offset。
            SEEK_END - 設定位置為檔案末尾(EOF)加上 offset(要移動到檔案末尾之前的位置,offset 必須是一個負值)。

提示和註釋

通過使用 ftell() 來找到當前位置!

測試案例

<?php
    $file = fopen("test.txt","r");
    // read first line
    fgets($file);
    // move back to beginning of file
    fseek($file,0);
?>

fstat()

作用

fstat() 函式返回關於一個開啟的檔案的資訊。
該函式將返回一個包含下列元素的陣列:
    [0][dev] - 裝置編號
    [1][ino] - inode 編號
    [2][mode] - inode 保護模式
    [3][nlink] - 連線數目
    [4][uid] - 所有者的使用者 ID
    [5][gid] - 所有者的組 ID
    [6][rdev] - inode 裝置型別
    [7][size] - 檔案大小的位元組數
    [8][atime] - 上次訪問時間(Unix 時間戳)
    [9][mtime] - 上次修改時間(Unix 時間戳)
    [10][ctime] - 上次 inode 改變時間(Unix 時間戳)
    [11][blksize] - 檔案系統 IO 的塊大小(如果支援)
    [12][blocks] - 所佔據塊的數目

用法

fstat(file)

提示和註釋

註釋:從這個函式返回的結果與伺服器到伺服器的結果是不相同的。這個陣列包含了數字索引、名稱索引或同時包含上述二者。

提示:fstat() 函式與 stat() 函式大致類似。唯一的不同點就是,fstat()函式在使用時,檔案必須已經開啟。

測試案例

<?php
$file = fopen("test.txt","r");
print_r(fstat($file));
fclose($file);
?>

結果

Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 92
    [8] => 1141633430
    [9] => 1141298003
    [10] => 1138609592
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 92
    [atime] => 1141633430
    [mtime] => 1141298003
    [ctime] => 1138609592
    [blksize] => -1
    [blocks] => -1
)

ftell()

作用

ftell() 函式返回在開啟檔案中的當前位置。
返回檔案指標的當前位置,如果失敗則返回 FALSE

用法

ftell(file)

提示和註釋

註釋:從這個函式返回的結果與伺服器到伺服器的結果是不相同的。這個陣列包含了數字索引、名稱索引或同時包含上述二者。

提示:fstat() 函式與 stat() 函式大致類似。唯一的不同點就是,fstat()函式在使用時,檔案必須已經開啟。

測試案例

<?php
$file = fopen("test.txt","r");

// print current position
echo ftell($file);

// change current position
fseek($file,"15");

// print current position again
echo "<br />" . ftell($file);

fclose($file);
?>

結果

0
15

ftruncate()

作用

ftruncate() 函式把開啟檔案截斷到指定的長度。
如果成功則返回 TRUE,如果失敗則返回 FALSE

用法

ftruncate(file,size)

測試案例

<?php
//check filesize
echo filesize("test.txt");
echo "<br />";

$file = fopen("test.txt", "a+");
ftruncate($file,100);
fclose($file);

//Clear cache and check filesize again
clearstatcache();
echo filesize("test.txt");
?>

結果

792
100

fwrite()

作用

fwrite() 函式將內容寫入一個開啟的檔案中。
函式會在到達指定長度或讀到檔案末尾(EOF)時(以先到者為準),停止執行。
如果函式成功執行,則返回寫入的位元組數。如果失敗,則返回 FALSE

用法

fwrite(file,string,length)

測試案例

<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);
?>

結果

21

glob()

作用

glob() 函式返回一個包含匹配指定模式的檔名或目錄的陣列。
該函式返回一個包含有匹配檔案/目錄的陣列。如果失敗則返回 FALSE

用法

glob(pattern,flags)
pattern    必需。規定檢索模式。
flags    可選。規定特殊的設定。
        可能的值:
            GLOB_MARK - 在每個返回的專案中加一個斜線
            GLOB_NOSORT - 按照檔案在目錄中出現的原始順序返回(不排序)
            GLOB_NOCHECK - 如果沒有檔案匹配則返回用於搜尋的模式
            GLOB_NOESCAPE - 反斜線不轉義元字元
            GLOB_BRACE - 擴充 {a,b,c} 來匹配 'a''b''c'
            GLOB_ONLYDIR - 僅返回與模式匹配的目錄項
            GLOB_ERR -PHP 5.1 新增的)如果錯誤則停止,預設情況下忽略所有錯誤

測試案例

<?php
print_r(glob("*.txt"));
print_r(glob("*.*"));
?>

結果

Array
(
    [0] => target.txt
    [1] => source.txt
    [2] => test.txt
    [3] => test2.txt
)
Array
(
    [0] => contacts.csv
    [1] => default.php
    [2] => target.txt
    [3] => source.txt
    [4] => tem1.tmp
    [5] => test.htm
    [6] => test.ini
    [7] => test.php
    [8] => test.txt
    [9] => test2.txt
)

is_dir()

作用

is_dir() 函式檢查指定的檔案是否是一個目錄。
如果目錄存在,該函式返回 TRUE

用法

is_dir(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "images";
if (is_dir($file)) {
    echo ("$file is a directory");
} else {
    echo ("$file is not a directory");
}
?>

結果

images is a directory

is_executable()

作用

is_executable() 函式檢查指定的檔案是否可執行。
如果檔案可執行,該函式返回 TRUE

用法

is_executable(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。
註釋:自 PHP 5.0 版本起,is_executable() 函式可用於 Windows。

測試案例

<?php
$file = "setup.exe";
if (is_executable($file)) {
    echo ("$file is executable");
} else {
    echo ("$file is not executable");
}
?>

結果

setup.exe is executable

is_file()

作用

is_file() 函式檢查指定的檔案是否是常規的檔案。
如果檔案是常規的檔案,該函式返回 TRUE

用法

is_file(file)

提示和註釋

該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "test.txt";
if (is_file($file)) {
    echo ("$file is a regular file");
} else {
    echo ("$file is not a regular file");
}
?>

結果

test.txt is a regular file

is_link()

作用

is_link() 函式檢查指定的檔案是否是一個連線。
如果檔案是一個連線,該函式返回 TRUE

用法

is_link(file)

提示和註釋

該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$link = "images";
if (is_link($link)) {
    echo ("$link is a link");
} else {
    echo ("$link is not a link");
}
?>

結果

images is not a link

is_readable()

作用

is_readable() 函式檢查指定的檔案是否可讀。
如果檔案可讀,該函式返回 TRUE

用法

is_readable(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "test.txt";
if (is_readable($file)) {
    echo ("$file is readable");
} else {
    echo ("$file is not readable");
}
?>

結果

test.txt is readable

is_uploaded_file()

作用

is_uploaded_file() 函式檢查指定的檔案是否是通過 HTTP POST 上傳的。
如果檔案是通過 HTTP POST 上傳的,該函式返回 TRUE

用法

is_uploaded_file(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "test.txt";
if(is_uploaded_file($file)) {
    echo ("$file is uploaded via HTTP POST");
} else {
    echo ("$file is not uploaded via HTTP POST");
}
?>

結果

test.txt is not uploaded via HTTP POST

is_writable()

作用

is_writable() 函式檢查指定的檔案是否可寫。
如果檔案可寫,該函式返回 TRUE。是通過 HTTP POST 上傳的,該函式返回 TRUE

用法

is_writable(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "test.txt";
if (is_writable($file)) {
    echo ("$file is writeable");
} else {
    echo ("$file is not writeable");
}
?>

結果

test.txt is writeable

is_writeable()

作用

is_writeable() 函式檢查指定的檔案是否可寫。
如果檔案可寫,該函式返回 TRUE。
該函式是 is_writable() 函式的別名。如果檔案可寫,該函式返回 TRUE。是通過 HTTP POST 上傳的,該函式返回 TRUE

用法

is_writeable(file)

提示和註釋

註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。

測試案例

<?php
$file = "test.txt";
if (is_writeable($file)) {
    echo ("$file is writeable");
} else {
    echo ("$file is not writeable");
}
?>

結果

test.txt is writeable

link()

作用

link() 函式建立一個從指定名稱連線的現存目標檔案開始的硬連線。
如果成功,該函式返回 TRUE。如果失敗,則返回 FALSE

用法

link(target,link)

target    必需。
link    必需。

提示和註釋

註釋:這不是一個 HTML 連線,而是一個檔案系統中的連線。
註釋:該函式不能作用於遠端檔案。

測試案例

<?php
$target = 'source.ext'; // This is the file that already exists
$link = 'newfile.ext'; // This the filename that you want to link it to

link($target, $link);
?>

linkinfo()

作用

linkinfo() 函式返回有關一個硬連線的資訊。
該函式返回裝置 ID,如果失敗則返回 FALSE

用法

linkinfo(path)

path    必需。規定要檢查的路徑。

提示和註釋

註釋:這不是一個 HTML 連線,而是一個檔案系統中的連線。
註釋:該函式不能在 Windows 平臺上執行。

測試案例

<?php
    echo linkinfo('/vmlinuz'); // 835
?>

lstat()

作用

lstat() 函式返回關於檔案或符號連線的資訊。
該函式將返回一個包含下列元素的陣列:
    [0][dev] - 裝置編號
    [1][ino] - inode 編號
    [2][mode] - inode 保護模式
    [3][nlink] - 連線數目
    [4][uid] - 所有者的使用者 ID
    [5][gid] - 所有者的組 ID
    [6][rdev] - inode 裝置型別
    [7][size] - 檔案大小的位元組數
    [8][atime] - 上次訪問時間(Unix 時間戳)
    [9][mtime] - 上次修改時間(Unix 時間戳)
    [10][ctime] - 上次 inode 改變時間(Unix 時間戳)
    [11][blksize] - 檔案系統 IO 的塊大小(如果支援)
    [12][blocks] - 所佔據塊的數目

用法

lstat(file)

path    必需。規定要檢查的路徑。

提示和註釋

註釋:從這個函式返回的結果與伺服器到伺服器的結果是不相同的。這個陣列包含了數字索引、名稱索引或同時包含上述二者。
註釋:該函式的結果會被快取。請使用 clearstatcache() 來清除快取。
提示:lstat() 函式與 stat() 函式大致類似。唯一的不同點就是,如果 file 引數是一個符號連線,那麼將返回該符號連線的狀態(而不是該符號連線所指向的檔案的狀態)。

測試案例

<?php
print_r(lstat("test.txt"));
?>

結果

Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 92
    [8] => 1141633430
    [9] => 1141298003
    [10] => 1138609592
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 92
    [atime] => 1141633430
    [mtime] => 1141298003
    [ctime] => 1138609592
    [blksize] => -1
    [blocks] => -1
)

參考

PHP 5 Filesystem 函式 | 菜鳥教程

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章