溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php文件如何實(shí)現(xiàn)可以讀取卻不能寫(xiě)入數(shù)據(jù)功能

發(fā)布時(shí)間:2021-09-16 09:47:33 來(lái)源:億速云 閱讀:149 作者:小新 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)php文件如何實(shí)現(xiàn)可以讀取卻不能寫(xiě)入數(shù)據(jù)功能,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

php文件實(shí)現(xiàn)讀取又不能寫(xiě)入數(shù)據(jù)的方法:1、使用“fopen('文件路徑', 'r')”語(yǔ)句以只讀的方式來(lái)打開(kāi)文件;2、使用fgetc()、fgets()、fgetss()等函數(shù)讀取數(shù)據(jù)即可。

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

在PHP中,可以使用fopen() 函數(shù)以只讀的方式來(lái)打開(kāi)文件來(lái)實(shí)現(xiàn)讀取又不能寫(xiě)入數(shù)據(jù)。

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

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

參數(shù)說(shuō)明如下:

  • $filename:為待打開(kāi)文件的 URL,這個(gè) URL 可以是文件所在服務(wù)器中的絕對(duì)路徑,也可以是相對(duì)路徑或者網(wǎng)絡(luò)資源中的文件;

  • $mode:用來(lái)設(shè)置文件的打開(kāi)方式(文件模式)。具體的值可以從下表中選?。?/p>

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

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

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

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

在對(duì)某一個(gè)字符進(jìn)行查找、替換時(shí),就需要有針對(duì)性地對(duì)某個(gè)字符進(jìn)行讀取,在 PHP 中可以使用 fgetc() 函數(shù)實(shí)現(xiàn)此功能。該函數(shù)語(yǔ)法格式如下:

fgetc(resource $handle)

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

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

注意:fgetc() 函數(shù)可能返回布爾值 FALSE,也可能返回等同于 FALSE 的非布爾值。所以應(yīng)該使用===運(yùn)算符來(lái)測(cè)試此函數(shù)的返回值。

另外,fgetc() 函數(shù)可安全用于二進(jìn)制對(duì)象,但不適用于讀取中文字符串,因?yàn)橐粋€(gè)中文通常占用 2~3 個(gè)字符。

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

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

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

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

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

其中參數(shù) $handle 是被打開(kāi)的文件;參數(shù) $length 為可選參數(shù),用來(lái)設(shè)置讀取的數(shù)據(jù)長(zhǎng)度。函數(shù)能夠?qū)崿F(xiàn)從指定文件 $handle 中讀取一行并返回長(zhǎng)度最大值為 $length-1 個(gè)字節(jié)的字符串。在遇到換行符、EOF 或者讀取了 $length-1 個(gè)字節(jié)后停止。如果忽略 $length 參數(shù),則默認(rèn)讀取 1k(1024字節(jié))長(zhǎng)度。

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

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

fgetss() 函數(shù)是 fgets() 函數(shù)的變體,用于讀取一行數(shù)據(jù),同時(shí) fgetss() 函數(shù)會(huì)過(guò)濾掉讀取內(nèi)容中的 HTML 和 PHP 標(biāo)記,函數(shù)的語(yǔ)法格式如下:

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

參數(shù)說(shuō)明如下:

  • $handle:為被打開(kāi)的文件;

  • $length:可選參數(shù),用來(lái)設(shè)置要讀取的數(shù)據(jù)長(zhǎng)度;

  • $allowable_tags:可選參數(shù),用來(lái)指定哪些標(biāo)記不被去掉。

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

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

<?php
    echo '-------使用 fgets() 函數(shù)的輸出結(jié)果:-------<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() 函數(shù)的輸出結(jié)果:-------<br>';
    $handle = @fopen("index.html", "r");
    if ($handle) {
        while (!feof($handle)) {
            $buffer = @fgetss($handle, 4096);
            echo $buffer.'<br>';
        }
        fclose($handle);
    }
?>

關(guān)于“php文件如何實(shí)現(xiàn)可以讀取卻不能寫(xiě)入數(shù)據(jù)功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI