php 目錄與檔案處理的方法
2.取得並更改目前目錄 使用getcwd()函數可以取得目前的工作目錄,該函數沒有參數。成功則傳回目前的工作目錄,失敗則回傳FALSE 3.開啟和關閉目錄句柄 opendir($dir) closed($dir_handle) 4.讀取目錄內容 readdir(),此參數是一個已經開啟的目錄句柄,與while循環可以實現對目錄的遍歷 5.取得指定路徑中的目錄與檔案 。 array scandir(string $directory [, int $sorting_order [, resource $context ]]) 說明:$directory為指定路徑。參數$sorting_order預設是按字母升序排列,如果設為1表示按字母的降序排列。 $context是可選參數,是一個資源變量,可以用stream_context_create()函數生成,這個變數保存著一些與特定的操作對象相關的資料。 函數運行成功則傳回一個包含指定路徑下的所有目錄和檔案名稱的數組,失敗則傳回FALSE 2.操作文件的一般方法 3.文件的開啟與關閉 1.開啟文件 resource fopen(string $filename , string $mode [, bool $use_include_path [, resource $context ]]) ●$filename參數。 fopen()函數將$filename參數指定的名字資源綁定到一個流上 ●$mode參數。 $mode參數指定了fopen()函數存取檔案的模式,取值請參考表4.5。 $mode 說 明 'r' 只讀方式開啟文件,從文件頭開始讀 'r ' 讀寫方式開啟文件,從文件頭開始讀寫 'w' 寫入方式開啟文件,將文件指標指向文件頭。如果檔案已經存在則刪除已有內容,如果檔案不存在則嘗試建立它 'w ' 讀寫方式開啟文件,將文件指標指向文件頭。如果檔案已經存在則刪除已有內容,如果檔案不存在則嘗試建立它 'a' 寫入方式開啟文件,將文件指標指向文件末尾,如果文件已有內容將從文件末尾開始寫入。如果文件不存在則嘗試建立它 'a ' 讀寫方式開啟文件,將文件指標指向文件末端。如果文件已有內容將從文件結尾開始讀寫。如果文件不存在則嘗試建立它 'x' 建立並以寫入方式開啟文件,將文件指標指向文件頭。如果檔案已存在,則fopen()呼叫失敗並傳回FALSE,並產生一條E_WARNING層級的錯誤訊息。如果文件不存在則嘗試建立它。此選項由PH及以後的版本所支持,僅能用於本地文件 'x ' 建立並以讀寫方式開啟文件,將文件指標指向文件頭。如果檔案已存在,則fopen()呼叫失敗並傳回FALSE,並產生一條E_WARNING層級的錯誤訊息。如果文件不存在則嘗試建立它。此選項由PH及以後的版本所支持,僅能用於本地文件 'b' 二進位模式,用於連接在其他模式後面。如果檔案系統能夠區分二進位檔案和文字檔案(Windows區分,而UNIX不區分),則需要使用到這個選項,建議一直使用這個選項以便獲得最大程度的可移植性 ●$use_include_path參數。如果需要在include_path(PHP的include路徑,在PHP的設定檔設定)中搜尋文件, 可選參數 $use_include_path的值可設為1或TRUE,預設為FALSE。 ●$context參數。可選的$context參數只有檔案遠端開啟時(如透過HTTP開啟)才使用,它是一個資源變量, 其中保存著與fopen()函數具體的操作對像有關的一些資料。如果fopen()開啟的是一個HTTP位址, 那麼這個變數記錄著HTTP請求的請求類型、HTTP版本及其他頭資訊;如果開啟的是FTP位址, 記錄的可能是FTP的被動/主動模式 2.關閉文件 bool fclose(resource $handle) 4.文件的寫入 文件寫入前需開啟文件,不存在先創建它,一般用fopen()函數創建 ●fwrite().檔案開啟後,寫入內容 int fwrite(resource $handle , string $string [, int $length ]) 說明:參數$handle是寫入的檔案句柄, $string是將要寫入檔案中的字串數據, $length是可選參數,如果指定了$length,則當寫入了$string中的前$length個位元組的資料後停止寫入。 ●file_put_contents()函數。 PHP 5也引進了file_put_contents()函數。這個函數的功能與依序呼叫fopen()、fwrite()、fclose()函數的函數一樣。文法格式如下: int file_put_contents(string $filename , string $data [, int $flags [, resource $context ]]) 說明:$filename是要寫入資料的檔案名稱。 $data是要寫入的字串,$data也可以是數組,但不能為多維數組。 在使用FTP或HTTP向遠端檔案寫入資料時,可以使用可選參數$flags和$context,這裡不具體介紹。 寫入成功後函數會傳回寫入的位元組數,否則傳回FALSE。 ●fputcsv()函數。 CSV是比較常用的檔案格式,一般以.csv作為副檔名。 CSV格式把文件的一行看做是一筆記錄,記錄裡的欄位使用逗號分隔。 在PHP中使用 fputcsv()函數可以把指定的陣列格式化為符合CSV檔案格式的內容,並寫入檔案指標所指向的目前行。文法格式如下: int fputcsv(resource $handle [, array $fields [, string $delimiter [, string $enclosure ]]]) 說明:參數$handle是要寫入的檔案句柄。 參數$fields是要格式化的陣列。 可選的$delimiter參數用於設定字段分界符(只允許一個字元),預設為逗號。 可選的$enclosure參數設定欄位環繞符(只允許一個字元),預設為雙引號 5 檔案的讀取 1.讀取任意長度 fread()函數可以用來讀取文件的內容,語法格式如下: string fread(int $handle, int $length) 說明:參數$handle是已經開啟的檔案指針, $length是指定讀取的最大位元組數,$length的最大取值為8192。 如果讀完$length個位元組數之前遇到檔案結尾標誌(EOF),則傳回所讀取的字符,並停止讀取操作。 如果讀取成功則傳回所讀取的字串,如果出錯回傳FALSE。 注意:在讀取文件後顯示文件內容時,文字中可能含有無法直接顯示的字符,如HTML標記。 這時需要使用htmlspecialchars()函數將HTML標記轉換為實體才能顯示檔案中的字元。 2.讀取整份文件 ●file()函數。 file()函數用於將整個檔案讀取到一個陣列中,語法格式如下: array file(string $filename [, int $use_include_path [, resource $context ]]) 說明:本函數的作用是將文件作為一個數組返回,數組中的每個單元都是文件中相應的一行,包括換行符在內, 如果失敗則回傳FALSE。參數$filename是讀取的檔案名,參數$use_inclue_path和$context的意義與先前介紹的相同 ●readfile()函數。 readfile()函數用來輸出一個檔案的內容到瀏覽器中,語法格式如下: int readfile(string $filename [, bool $use_include_path [, resource $context ]]) ●fpassthru()函數。 fpassthru()函數可以將給定的檔案指標從目前的位置讀取到EOF,並且把結果寫到輸出緩衝區。 要使用這個函數,必須先使用fopen()函數開啟文件,然後將文件指標當作參數傳遞給fpassthru()函數, fpassthru()函數把文件指標所指向的文件內容傳送到標準輸出。如果操作成功傳回讀取到的位元組數,否則回傳FALSE。 ●file_get_contents()函數。 file_get_contents()函數可以將整個或部分檔案內容讀取到一個字串中, 函數與依序呼叫fopen()、fread()及fclose()函數的函數一樣。文法格式如下: string file_get_contents(string $filename [, int $offset [, int $maxlen ]]) 說明:$filename是要讀取的檔案名,可選參數$offset可以指定從檔案頭開始的偏移量, 函數可以傳回從$offset所指定的位置開始長度為$maxlen的內容。如果失敗,函數將傳回FALSE 3. 讀取一行數據 ●fgets()函數。 fgets()函數可以從文件中讀出一行文本,語法格式如下: string fgets(int $handle [, int $length ]) 說明:$handle是已經開啟的檔案句柄,可選參數$length指定了傳回的最大位元組數,考慮到行結束符, 最多可以傳回length-1個位元組的字串。如果沒有指定$length,預設為1024個位元組 ●fgetss()函數與fgets()基本上相同,不過fgetss()函數會嘗試從讀取的文字中去掉任何html和php標記。 ●fgetcsv()函數。 fgetcsv()函數可以讀取指定檔案的目前行,使用CSV格式解析出字段,並傳回一個包含這些字段的數組。 文法格式如下: array fgetcsv(int $handle [, int $length [, string $delimiter [, string $enclosure ]]]) 4. 讀取一個字符 fgetc()函數。 fgetc()函數可以從檔案指針讀取一個字符,語法格式為: string fgetc(resource $handle) 此函數傳回$handle指標所指向的檔案中的一個字符,遇到EOF則傳回FALSE 5. 使用指定格式讀取文件 fscanf()函數。 fscanf()函數可以讀取檔案中的數據,並根據指定的格式進行格式化,並傳回一個陣列。文法格式如下: mixed fscanf(resource $handle , string $format [, mixed &$... ]) 格式字串中的任何空白都會與輸入流中的任何空白相符。 這意味著甚至格式字串中的製表符“t”也會與輸入流中的一個空格字元相符。 6.檔案的上傳與下載 1.文件上傳 文件上傳可以透過提交html表單來實現。檔案上傳結束後,預設儲存在臨時目錄中,這時必須從臨時目錄中刪除或移動到其他地方 使用PHP的move_uploaded_file()將其移到其它位置上 move_uploaded_file()函數語法格式如下: bool move_uploaded_file(string $filename , string $destination) 注意:在將文件移動之前需要檢查文件是否是透過HTTP POST上傳的,這可以用來確保惡意的用戶無法欺騙腳本去訪問本不能訪問的文件, 這時需要使用is_uploaded_file()函數。此函數的參數為檔案的暫存檔案名,若檔案是透過HTTP POST上傳的,則函數傳回TRUE。 範例4.5 將由HTML表單上傳的GIF圖片檔案移到html目錄中
2.文件下載 header()函數的功能是向瀏覽器發送正確的HTTP標頭,標頭指定了網頁內容的類型、頁面的屬性等資訊。 header()函數的功能很多,這裡只列出以下幾點: ●頁面跳轉。如果header()函數的參數為“Location: xxx”,頁面就會自動跳到「xxx」所指向的URL位址。例如: header("Location: http://www.baidu.com"); //跳到百度頁面 header("Location: first.php"); //跳到工作目錄的first.php頁面 ●指定網頁內容。例如,同樣的一個XML格式的文件,如果header()函數的參數指定為“Content-type: application/xml”, 瀏覽器會將其依照XML檔案格式來解析。但如果是“Content-type: text/xml”,瀏覽器就會將其視為文字解析。 header()函數結合readfile()函數可以下載將要瀏覽的檔案 7.其他常用檔案函數 1.計算檔案大小 filesize()函數用來計算檔案的大小,以位元組為單位 filesize()函數結合fread()函數可以實作一次讀取整個檔案 2.判斷文件是否存在 file_exits() is_dir()函數用來判斷給定檔名是否為目錄 is_file()函數用來判斷給定檔案名稱是否為檔案。 is_readable()函數用於判斷給定檔案是否可讀。 is_writeable()用來判斷給定的檔案是否可寫 3.刪除文件 unlink() 4.複製文件 bool copy(string $source,string $dest),如果目示檔案已存在,則將被覆蓋 5.移動、重新命名文件 除了move_uploaded_file()函數,還有一個rename()函數也可以移動檔案。 文法格式如下: bool rename ( string $oldname , string $newname [, resource $context ] ) 說明:rename()函數主要用於對一個檔案進行重新命名,$oldname是檔案的舊名,$newname為新的檔案名稱。 當然,如果$oldname與$newname的路徑不相同,就實作了移動該檔案的功能 6.文件指標操作 PHP中有很多操作檔案指標的函數,如rewind()、ftell()、fseek()函數等。先前使用過的feof()函數用來測試檔案指標是否處於檔案尾部, 也屬於檔案指標操作函數。 rewind()函數。用於重置檔案的指標位置,使指標返回到檔案頭。它的參數只有一個,就是已經開啟的指定檔案的檔案句柄。 ftell()函數。可以以位元組為單位,報告檔案中指標的位置,也就是檔案流中的偏移量。它的參數也是已經開啟的檔案句柄。 fseek()函數。可用於移動文件指針,語法格式如下: int fseek ( resource $handle , int $offset [, int $whence ] ) 例4.8 投票統計
|

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。
