zoukankan      html  css  js  c++  java
  • PHP读取文件的多种方法

    1.传统的方法 fopen, fclose

          feof:file、end of file

          例子:

    $file_handle = fopen("c:\myfile.txt", "r");//使用fopen打开与文件的连接
    while (!feof($file_handle)) {  //使用feof判断是否到达文件末尾
       $line = fgets($file_handle); //使用fgets按行读取文件内容
       echo $line;
    }
    fclose($file_handle); //最后使用fclose关闭与文件的连接
    

      过程: 1. fopen -> feof -> fgets -> fclose

                       打开             读取             关闭

          注意:如果是从二进制文件读取以获得跨平台兼容性,则应当将 r 更改为 rb

    2. 以fgetss取代fgets

          fgetss() 函数从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。

          与 fgets() 相同,不同的是 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

          例子:

    <?php
         $file = fopen("test.htm","r");
         echo fgetss($file);
         fclose($file);
    
    ?> 
    

      当然也可以通过传递第三个参数来指定哪些标记是允许输出的:

    <?php
    
    $file = fopen("test.htm","r");
    echo fgetss($file,1024,"<p>,<b>");//<p>和<b>标记将不会被过滤
    fclose($file);
    
    ?>  

             详细信息参考:http://www.w3school.com.cn/php/func_filesystem_fgetss.asp

    3. 以二进制读取 fread取代fgets

          同样需要打开文件连接 fopen    

    $fh = fopen("c:\myfile.txt", "rb");//rb是兼容二进制读取
    $data = fread($fh, filesize("c:\myfile.txt"));
    fclose($fh);
    

      特别注意:fread()虽然可以通过第二个参数来指定读取文件的长度,但最长只能读取8192个字节(8kb)

                        如果文件长度超过8k则需要循环读取

    4.将整个文件读入到一个字符串的方法 file_get_contents()

          详细可见:PHP的file_get_contents()方法,将整个文件读入字符串中

    5.将整个文件读入到一个数组中返回 file()  

    <?php
         print_r(file("c:\abc.txt"));//结果将abc.txt文件的每一行当成数组的每个元素返回
    ?>
    

      

    6. 非线性文件处理 fseek

             以上函数只允许顺序读取文件,当需要来回跳转到文件的不同部分。这时就得用 fseek 。
             5.1. fseek($fh, 0); //跳转回文件的开头

             5.2. fseek($fh, 1024);//返回前1024字节前面


             从 PHP V4.0 新增功能:
             5.3. fseek($fh, 100, SEEK_CUR);//从当前位置向前跳转 100 个字节

             5.4. fseek($fh, -100, SEEK_CUR);//向后跳转 100 个字节

             5.5. fseek($fh, -100, SEEK_END);//向后跳转至文件末尾前 100 个字节处

    参考:http://www.ibm.com/developerworks/cn/opensource/os-php-readfiles/

  • 相关阅读:
    Linux进程间通信分类 以及 pipe的原理实现
    单链表的快速排序
    再谈二分查找
    数据库范式
    二分查找法浅析
    C# Observer设计模式
    C# 交错数组浅析
    C语言初学 数学中带根号的复杂计算问题
    C语言初学 计算三角形面积问题
    C语言初学 简单定义圆的面积计算问题
  • 原文地址:https://www.cnblogs.com/tommy-huang/p/4674085.html
Copyright © 2011-2022 走看看