• php初级教程三 文件


    PHP 文件处理

    fopen() 函数用于在 PHP 中打开文件。

    打开文件

    fopen() 函数用于在 PHP 中打开文件。

    此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:

    <html>
    <body>
    
    <?php
    $file=fopen("welcome.txt","r");
    ?>
    
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    文件可能通过下列模式来打开:

    模式描述
    r只读。在文件的开头开始。
    r+读/写。在文件的开头开始。
    w只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    w+读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    a追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
    a+读/追加。通过向文件末尾写内容,来保持文件内容。
    x只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
    x+读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

    注释:如果 fopen() 函数无法打开指定文件,则返回 0 (false)。

    实例

    如果 fopen() 函数不能打开指定的文件,下面的实例会生成一段消息:

    <html>
    <body>
    
    <?php
    $file=fopen("welcome.txt","r") or exit("Unable to open file!");
    ?>
    
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    关闭文件

    fclose() 函数用于关闭打开的文件:

    <?php
    $file = fopen("test.txt","r");
    
    //执行一些代码
    
    fclose($file);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    检测文件末尾(EOF)

    feof() 函数检测是否已到达文件末尾(EOF)。

    在循环遍历未知长度的数据时,feof() 函数很有用。

    注释:在 w 、a 和 x 模式下,您无法读取打开的文件!

    if (feof($file)) echo "文件结尾";
    
    • 1

    逐行读取文件

    fgets() 函数用于从文件中逐行读取文件。

    注释:在调用该函数之后,文件指针会移动到下一行。

    实例

    下面的实例逐行读取文件,直到文件末尾为止:

    <?php
    $file = fopen("welcome.txt", "r") or exit("无法打开文件!");
    // 读取文件每一行,直到文件结尾
    while(!feof($file))
    {
        echo fgets($file). "
    "
    ; } fclose($file); ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    逐字符读取文件

    fgetc() 函数用于从文件中逐字符地读取文件。

    注释:在调用该函数之后,文件指针会移动到下一个字符。

    实例

    下面的实例逐字符地读取文件,直到文件末尾为止:

    <?php
    $file=fopen("welcome.txt","r") or exit("无法打开文件!");
    while (!feof($file))
    {
        echo fgetc($file);
    }
    fclose($file);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    案例

    PHP对逗号分隔符文件(*.csv)的处理。

    当如果你需要处理的数据比较少时可以使用csv文件(这是一类文本文件)存储数据更加便利。

    比如在php代码同目录下有一个a.csv文件,内容如下:(注意逗号是半角英文)

    小王,小红,小明,小凡

    php代码如何:

    <?php
    $fh=fopen("a.csv","r");//这里我们只是读取数据,所以采用只读打开文件流
    $arr=fgetcsv($fh);//这个函数就是读取CSV文件的函数,他把文本读入后转为数组存储在$arr中
    fclose($fh);
    foreach($arr as $key=>$value){echo $value;}//循环输出所有的值
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:CSV文本编码必须和HTML的编码相同,否则用php写到HTML中,用户会看到乱码。也可以使用 iconv 转码函数进行转码。

    如果打开一个文件,文件名为中文,如果系统编程和当前文档编码不一致,会导致文件找不到无法打开,解决方法是用 iconv 函数编码转换成一致,如下:

    $fpath=iconv('UTF-8','GB2312',"题库.csv");
    $file=fopen($fpath,"r") or exit("无法打开文件!");
    //此处省略相关操作
    fclose($file);    
    
    • 1
    • 2
    • 3
    • 4

    用相对路径打不开子目录中的文件时,可用绝对路径打开,如下:

    $file=fopen(dirname(__FILE__).'\\files\\tk.csv',"r") or exit("无法打开文件!");   
    //此处省略相关操作
    fclose($file);
    
    • 1
    • 2
    • 3
  • 相关阅读:
    全量知识系统问题及SmartChat给出的答复 之19 关于演示模板
    11.20 知识总结(choices参数、MVC和MTV的模式、Django与Ajax技术)
    【四、http】go的http的文件下载
    js 利用slice做分页的坑
    C语言中,如何判断两个数组是否包含相同元素?
    数据可视化——根据提供的数据,将数据经过处理后以折线图的形式展现
    基于SSM的药品管理系统的设计与实现
    微信小程序 | 实现活动报名登记
    【开发方案】Android 双卡设备手动搜网功能适配
    k8s部署xxl-job后,执行任务提示拒绝连接Connection Refused
  • 原文地址:https://blog.csdn.net/weixin_44905132/article/details/127859682