Summary of several methods for reading files in PHP (recommended), _PHP tutorial

WBOY
Release: 2016-07-12 08:51:07
Original
855 people have browsed it

A summary of several methods of reading files in PHP (recommended),

1.fread

string fread ( int $handle , int $length )

fread() reads up to length bytes from the file pointed to by handle. This function is called after reading up to length bytes, or when EOF is reached, or (for network streams) when a packet is available, or (after opening a user space stream) 8192 bytes have been read. Will stop reading the file, depending on which condition is encountered first.

fread() returns the read string, or FALSE if an error occurs.

<&#63;php
  $filename = "/usr/local/something.txt";
  $handle = fopen($filename, "r");//读取二进制文件时,需要将第二个参数设置成'rb'
  
  //通过filesize获得文件大小,将整个文件一下子读到一个字符串中
  $contents = fread($handle, filesize ($filename));
  fclose($handle);
&#63;>
Copy after login

If the file to be read is not a local ordinary file, but a remote file or stream file, this method cannot be used, because filesize cannot obtain the size of these files. At this time, you need to use the return value of feof() or fread() to determine whether the end of the file has been read.

For example:

<&#63;php
  $handle = fopen('http://www.baidu.com', 'r');
  $content = '';
  while(!feof($handle)){
    $content .= fread($handle, 8080);
  }
  echo $content;
  fclose($handle);
&#63;>
Copy after login

or:

<&#63;php
  $handle = fopen('http://www.baidu.com', 'r');
  $content = '';
  while(false != ($a = fread($handle, 8080))){//返回false表示已经读取到文件末尾
    $content .= $a;
  }
  echo $content;
  fclose($handle);
&#63;>
Copy after login

2.fgets

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

fgets() reads a line from the file pointed to by handle and returns a string with a length of at most length - 1 bytes. Stops when a newline character (included in the return value), EOF, or length - 1 bytes has been read (whichever occurs first). If length is not specified, it defaults to 1K, or 1024 bytes.

<&#63;php
  $handle = fopen('./file.txt', 'r');
  while(!feof($handle)){
    echo fgets($handle, 1024);
  }
  fclose($handle);
&#63;>
Copy after login

Note: The length parameter is optional as of PHP 4.2.0, if omitted, the length of the line is assumed to be 1024. Starting with PHP 4.3, omitting length will continue reading from the stream until the end of the line. If most of the lines in the file are larger than 8KB, specifying the maximum line length in the script is more efficient in utilizing resources. Starting with PHP 4.3 this function is safe for use with binary files. Earlier versions don't.

3.fgetss

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

Same function as fgets, but fgetss will try to remove any HTML and PHP tags from the read text. You can use the optional third parameter to specify which tags are not to be removed.

<&#63;php
  $handle = fopen('./file.txt', 'r');
  while(!feof($handle)){
    echo fgetss($handle, 1024, '<br>');
  }
  fclose($handle);
&#63;>
Copy after login

4.file

array file ( string $filename [, int $use_include_path [, resource $context ]] )

Read the file contents into an array. Each item in the array corresponds to a line in the file, including newlines. You can use the rtrim() function to filter out newline characters when line terminators are not required.

<&#63;php
  $a = file('./file.txt');
  foreach($a as $line => $content){
    echo 'line '.($line + 1).':'.$content;
  }
&#63;>
Copy after login

5.readfile

int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )

Read in a file and write to the output buffer. Returns the number of bytes read from the file. Returns FALSE on error and displays an error message unless called as @readfile().

<&#63;php
  $size = readfile('./file.txt');
  echo $size;
&#63;>
Copy after login

6.file_get_contents

string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

Read the file into a string. The third parameter $context can be used to set some parameters, such as setting timeout when accessing remote files, etc.

In addition, file_get_contents has much better performance than the above functions, so file_get_contents should be used first. But readfile seems to have better performance than file_get_contents (?), because it does not need to call fopen.

<&#63;php 
  $ctx = stream_context_create(array( 
    'http' => array( 
      'timeout' => 1  //设置超时
      ) 
    ) 
  ); 
  echo file_get_contents("http://www.baidu.com/", 0, $ctx); 
&#63;>
Copy after login

7.fpassthru

int fpassthru ( resource $handle )

Read the given file pointer from the current position to EOF and write the result to the output buffer.

<&#63;php 
  header("Content-Type:text/html;charset=utf-8"); 
  $handle = fopen('./test2.php', 'r');
  fseek($handle, 1024);//将指针定位到1024字节处
  fpassthru($handle);
&#63;>
Copy after login

8.parse_ini_file

array parse_ini_file ( string $filename [, bool $process_sections ] )

parse_ini_file() loads an ini file specified by filename and returns its settings as an associative array. If you set the final process_sections parameter to TRUE, you will get a multidimensional array containing the name and settings of each section in the configuration file. The default value for process_sections is FALSE.

Note:

1. If the value in the ini file contains any non-alphanumeric characters, it needs to be enclosed in double quotes (").

2. Some reserved words cannot be used as key names in ini files, including: null, yes, no, true and false. The values ​​null, no and false are equivalent to "", and the values ​​yes and true are equivalent to "1". The characters {}|&~![()" also cannot be used anywhere in key names, and these characters have special meaning in option values.

test.ini file content:

; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username
Copy after login

test.php content:

<&#63;php 
  $config = parse_ini_file('./test.ini', ture);
  print_r($config);
&#63;>
Copy after login

Output content:

Array
(
  [first_section] => Array
    (
      [one] => 1
      [five] => 5
      [animal] => BIRD
    )

  [second_section] => Array
    (
      [path] => /usr/local/bin
      [URL] => http://www.example.com/~username
    )

)
Copy after login

A few notes:

1. Encourage the use of the b flag when processing binary files, even if the system does not require it, so as to make the script more portable.

2. The allow_url_fopen option activates the URL form of the fopen encapsulation protocol so that URL objects such as files can be accessed. The default encapsulation protocols provide ftp and http protocols to access remote files. Some extension libraries such as zlib may register more encapsulation protocols. For security reasons, this option can only be set in php.ini.

3. If you want to open a URL with special characters (for example, spaces), you need to use urlencode() for URL encoding.

The above summary (recommended) of several methods of reading files in PHP is all the content shared by the editor. I hope it can give you a reference, and I hope you will support Bangkejia more.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133022.htmlTechArticleSummary of several methods for reading files in PHP (recommended), 1. fread string fread ( int $handle , int $length ) fread() Reads up to length bytes from the file pointed to by handle. This function is in...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template