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]])

参数说明如下:

mode说明
r以只读方式打开,将文件指针指向文件头。
r+以读写方式打开,将文件指针指向文件头。
w以写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则创建该文件。
w+以读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则创建该文件。
a以写入方式打开,将文件指针指向文件末尾。如果文件不存在则创建该文件。
a+以读写方式打开,将文件指针指向文件末尾。如果文件不存在则创建该文件。
x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则创建该文件。仅适用于本地文件。
x+创建并以读写方式打开,其他的行为和 x 一样。
c只打开文件进行写入,如果文件不存在,则创建该文件。如果文件存在,不会清空文件内容,并将文件指针指向文件头。
c+打开文件进行读写,如果文件不存在,则创建该文件。如果文件存在,不会清空文件内容,并将文件指针指向文件头。

读取文件数据,可以使用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]])

参数说明如下:

注意: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文件如何实现可以读取却不能写入数据功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Python如何实现从数据库读取大量数据批量写入文件
  2. Python如何实现读取及写入csv文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:如何解决C++结构体内存对齐计算问题

下一篇:mamp怎么修改php版本

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》