中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php文件如何實現可以讀取卻不能寫入數據功能

發布時間:2021-09-16 09:47:33 來源:億速云 閱讀:149 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關php文件如何實現可以讀取卻不能寫入數據功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

php文件實現讀取又不能寫入數據的方法:1、使用“fopen('文件路徑', 'r')”語句以只讀的方式來打開文件;2、使用fgetc()、fgets()、fgetss()等函數讀取數據即可。

本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦

在PHP中,可以使用fopen() 函數以只讀的方式來打開文件來實現讀取又不能寫入數據。

PHP 中可以使用 fopen() 函數來打開文件或者 URL。如果打開成功,則返回文件指針資源;如果打開失敗則返回 FALSE,該函數的語法格式如下所示:

fopen(string $filename, string $mode[, bool $use_include_path = false[, resource $context]])

參數說明如下:

  • $filename:為待打開文件的 URL,這個 URL 可以是文件所在服務器中的絕對路徑,也可以是相對路徑或者網絡資源中的文件;

  • $mode:用來設置文件的打開方式(文件模式)。具體的值可以從下表中選取:

mode說明
r以只讀方式打開,將文件指針指向文件頭。
r+以讀寫方式打開,將文件指針指向文件頭。
w以寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則創建該文件。
w+以讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則創建該文件。
a以寫入方式打開,將文件指針指向文件末尾。如果文件不存在則創建該文件。
a+以讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則創建該文件。
x創建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則創建該文件。僅適用于本地文件。
x+創建并以讀寫方式打開,其他的行為和 x 一樣。
c只打開文件進行寫入,如果文件不存在,則創建該文件。如果文件存在,不會清空文件內容,并將文件指針指向文件頭。
c+打開文件進行讀寫,如果文件不存在,則創建該文件。如果文件存在,不會清空文件內容,并將文件指針指向文件頭。
  • $use_include_path:可選參數,如果也需要在 include_path 中搜尋文件的話,可以將 $use_include_path 設為 1 或 TRUE;

  • $context:可選參數,在 PHP5.0.0 中增加了對上下文(Context)的支持。

讀取文件數據,可以使用fgetc()、fgets()、fgetss()等函數

fgetc():從文件中讀取一個字符

在對某一個字符進行查找、替換時,就需要有針對性地對某個字符進行讀取,在 PHP 中可以使用 fgetc() 函數實現此功能。該函數語法格式如下:

fgetc(resource $handle)

其中參數 $handle 為使用 fopen() 或 fsockopen() 成功打開的文件資源。

fgetc() 函數可以返回一個包含有一個字符的字符串,該字符是從 $handle 指向的文件中得到。當碰到 EOF 時返回 FALSE。

注意:fgetc() 函數可能返回布爾值 FALSE,也可能返回等同于 FALSE 的非布爾值。所以應該使用===運算符來測試此函數的返回值。

另外,fgetc() 函數可安全用于二進制對象,但不適用于讀取中文字符串,因為一個中文通常占用 2~3 個字符。

【示例】使用 fgetc() 函數逐個字符的讀取文件中的內容并輸出。

<?php
    header("Content-Type: text/html;charset=utf-8");    //設置字符編碼
    $handle = fopen('./test.txt', 'r');                 //打開文件
    if (!$handle) {                                     //判斷文件是否打開成功
        echo '文件打開失敗!';
    }
    while (false !== ($char = fgetc($handle))) {        //循環讀取文件內容
        echo $char;
    }
    fclose($handle);                                    //關閉文件
?>

fgets()和fgetss():逐行讀取文件

fgets() 函數用于一次讀取一行數據。函數的語法格式如下:

fgets(resource $handle[, int $length])

其中參數 $handle 是被打開的文件;參數 $length 為可選參數,用來設置讀取的數據長度。函數能夠實現從指定文件 $handle 中讀取一行并返回長度最大值為 $length-1 個字節的字符串。在遇到換行符、EOF 或者讀取了 $length-1 個字節后停止。如果忽略 $length 參數,則默認讀取 1k(1024字節)長度。

【示例】使用 fgets() 函數逐行讀取文件的內容并輸出。

<?php
    $handle = @fopen("./test.txt", "r");
    if ($handle) {
        while (($info = fgets($handle, 1024)) !== false) {
            echo $info.'<br>';
        }
        fclose($handle);
    }                                
?>

fgetss() 函數是 fgets() 函數的變體,用于讀取一行數據,同時 fgetss() 函數會過濾掉讀取內容中的 HTML 和 PHP 標記,函數的語法格式如下:

fgetss(resource $handle[, int $length[, string $allowable_tags]])

參數說明如下:

  • $handle:為被打開的文件;

  • $length:可選參數,用來設置要讀取的數據長度;

  • $allowable_tags:可選參數,用來指定哪些標記不被去掉。

注意:fgetss() 函數在 PHP7.3 及之后的版本中已經棄用。

【示例】分別使用 fgets() 函數和 fgetss() 函數讀取 index.html 文件并輸出結果,看一看有什么區別。

<?php
    echo '-------使用 fgets() 函數的輸出結果:-------<br>';
    $handle = @fopen("index.html", "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = @fgets($handle, 4096);
            echo htmlentities($buffer,ENT_QUOTES,"UTF-8").'<br>';
        }
        fclose($handle);
    }
    echo '-------使用 fgetss() 函數的輸出結果:-------<br>';
    $handle = @fopen("index.html", "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = @fgetss($handle, 4096);
            echo $buffer.'<br>';
        }
        fclose($handle);
    }
?>

關于“php文件如何實現可以讀取卻不能寫入數據功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

綦江县| 永寿县| 杭州市| 张家港市| 枣强县| 崇文区| 遵义市| 苍山县| 漾濞| 吉安市| 玉门市| 绍兴县| 奉化市| 武功县| 克拉玛依市| 泸溪县| 姚安县| 汾西县| 盱眙县| 句容市| 邛崃市| 台江县| 荔波县| 敦煌市| 钦州市| 崇仁县| 安福县| 阿拉善盟| 托克逊县| 灯塔市| 怀远县| 萨迦县| 巢湖市| 邳州市| 迁安市| 临漳县| 永州市| 旅游| 安仁县| 临洮县| 松原市|