1. 程式人生 > >Php高階知識 1

Php高階知識 1

4.2 PHP readfile() 函式

readfile() 函式讀取檔案,並把它寫入輸出緩衝。

假設我們有一個名為 "webdictionary.txt" 的文字檔案,存放在伺服器上,就像這樣:

AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language

讀取此檔案並寫到輸出流的 PHP 程式碼如下(如讀取成功則 readfile() 函式返回位元組數):

例項

<!DOCTYPE html>
<html>
<body>

<?php
echo readfile("webdictionary.txt");
?>

</body>
</html>

執行結果:

AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language236

如果想做的所有事情就是開啟一個檔案並讀取器內容,那麼 readfile() 函式很有用。

5、PHP 檔案開啟/讀取/讀取

將介紹如何在伺服器上開啟、讀取以及關閉檔案。

5.1 PHP Open File - fopen()

開啟檔案的更好的方法是通過 fopen() 函式。此函式提供比 readfile() 函式更多的選項。

使用文字檔案 "webdictionary.txt":

AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language

fopen() 的第一個引數包含被開啟的檔名,第二個引數規定開啟檔案的模式。如果 fopen() 函式未能開啟指定的檔案,下面的例子會生成一段訊息:

例項

<!DOCTYPE html>
<html>
<body>

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

</body>
</html>

執行結果:

AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language

提示:我們接下來將介紹 fread() 以及 fclose() 函式。

檔案會以如下模式之一開啟:

模式

描述

r

開啟檔案為只讀。檔案指標在檔案的開頭開始。

w

開啟檔案為只寫。刪除檔案的內容或建立一個新的檔案,如果它不存在。檔案指標在檔案的開頭開始。

a

開啟檔案為只寫。檔案中的現有資料會被保留。檔案指標在檔案結尾開始。建立新的檔案,如果檔案不存在。

x

建立新檔案為只寫。返回 FALSE 和錯誤,如果檔案已存在。

r+

開啟檔案為讀/寫、檔案指標在檔案開頭開始。

w+

開啟檔案為讀/寫。刪除檔案內容或建立新檔案,如果它不存在。檔案指標在檔案開頭開始。

a+

開啟檔案為讀/寫。檔案中已有的資料會被保留。檔案指標在檔案結尾開始。建立新檔案,如果它不存在。

x+

建立新檔案為讀/寫。返回 FALSE 和錯誤,如果檔案已存在。

5.2 PHP 讀取檔案 - fread()

fread() 函式讀取開啟的檔案。

fread() 的第一個引數包含待讀取檔案的檔名,第二個引數規定待讀取的最大位元組數。

如下 PHP 程式碼把 "webdictionary.txt" 檔案讀至結尾:

fread($myfile,filesize("webdictionary.txt"));

5.3 PHP 關閉檔案 - fclose()

fclose() 函式用於關閉開啟的檔案。

註釋:用完檔案後把它們全部關閉是一個良好的程式設計習慣。您並不想開啟的檔案佔用您的伺服器資源。

fclose() 需要待關閉檔案的名稱(或者存有檔名的變數):

<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>

5.4 PHP 讀取單行檔案 - fgets()

fgets() 函式用於從檔案讀取單行。

下例輸出 "webdictionary.txt" 檔案的首行:

例項

<!DOCTYPE html>
<html>
<body>

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

</body>
</html>

執行結果:

AJAX = Asynchronous JavaScript and XML

註釋:呼叫 fgets() 函式之後,檔案指標會移動到下一行。

5.5 PHP 檢查 End-Of-File - feof()

feof() 函式檢查是否已到達 "end-of-file" (EOF)。

feof() 對於遍歷未知長度的資料很有用。

下例逐行讀取 "webdictionary.txt" 檔案,直到 end-of-file:

例項

<pre class="php" name="code"><!DOCTYPE html>
<html>
<body>

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出一行直到 end-of-file
while(!feof($myfile)) {
   echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

</body>
</html>

執行結果:

AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language

5.6 PHP 讀取單字元 - fgetc()

fgetc() 函式用於從檔案中讀取單個字元。

下例逐字元讀取 "webdictionary.txt" 檔案,直到 end-of-file:

例項

<!DOCTYPE html>
<html>
<body>

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出單字元直到 end-of-file
while(!feof($myfile)) {
   echo fgetc($myfile);
}
fclose($myfile);
?>

</body>
</html>


執行結果:

AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language

註釋:在呼叫 fgetc() 函式之後,檔案指標會移動到下一個字元。