SEARCH
Newsletter
Subscribe to get design
tips, latest trends, free
stuff and more.
It doesn't look like an e-mail address

hosting

  Web Programming PHP Handling Files

Handling Files

allsyntax.com PHP Oct 05, 2005

Handling FilesWe can use PHP to open files and manipulate the data contained within them.

Opening a File

To open a file or a URL we use fopen().

The fopen() function normally uses two parameters. The first is the file which we want to open. This can be a file on your system, or a file on a remote server. In this example we are opening a text file on a windows machine. The second parameter is the "mode". We can open a file for only reading. We can open a file for only writing. We can open a file for reading and writing. In the above example "r" means reading.

Reading Info from a File

After we have opened the file, we will probably want to do something with it. To read the contents of a file into a variable we use fread().

Now fread() also uses two parameters. The first parameter is the variable to which we assigned the fopen() function, the second is the number of bytes we want to read up to in the file. In this case we want to read the entire file, so we use the filesize() function to get the size of the file specified in the $filename variable. Thus, it reads the entire file in.

Let us assume C:file.txt contains:

line1
line2
line3
line4
line5

So now $contents would contain:

$contents = "line1nline2nline3nline4nline5";

If we printed the variable out the output would be:

line1
line2
line3
line4
line5

The contents of the file are read into a string, complete with newline characters (n). We can then process this string however we like.

Writing To a File

We can also write data into a file once we have opened it. To do this we use the fputs() function.

Firstly we open the file. Notice the "a" parameter? That means "open the file for writing only, and place the file pointer at the end of the file". So now PHP opens myfile.txt for writing and positions the file pointer at the end of the line.

We then use fputs() to write to the file. We define our string in $string which i put "nline6". The n bit means start a new line, and the print out "line 6". We then close the file.

So now what will the file contain?

line1
line2
line3
line4
line5
line6

I think you'll agree they've made it very easy to handle files in PHP.

Modes

There are various modes you can use to open a file, they are listed on the php.net fopen() function page, but i'll stick them up on here too

'r' - Open for reading only; place the file pointer at the beginning of the file.

'r+' - Open for reading and writing; place the file pointer at the beginning of the file.

'w' - Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

'w+' - Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

'a' - Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

'a+' - Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

The above was taken from php.net's fopen() function reference page.

Include() and Require()

Two very useful functions in PHP are include() and require(). These functions do what they say. They allow you to include other files into a PHP document. Require() and Include() behave slightly differently, but are basically the same.

Let's write out an example of how we could use include():

page_header.php

This will be the header of your page.

page_footer.php

This will be the footer of your page.

Now we have two files containing some HTML and some PHP code. If we're making many pages, why do this in every file? We could just include these two files into each page, making documents smaller and simpler. This is how we would do it:

index.php

This would simply include page_header.php at the top of the file, and page_footer.php at the bottom of the file. We wouldn't need to write out the code everytime, just include it. An included file can itself contain an include() function, and PHP will handle it with ease. Always try to use the full system path to the file you're including, not the relative path, this will ensure PHP can find the files easily. In the above example we simply include the header and footer PHP documents and print out a few variables. We also use the foreach() function to go through each value in the $members array and print the members out in a neat little table.

In the above example we could use require() and it would have the same effect, so what's the difference between them?

What's the Difference?

One difference between require() and include() is the way they handle an error. If PHP cannot find the file you have entered in the include() function, it just prints out a warning and informs you that the file was not included, yet the script continues. If the same happens with require(), it doesn't issue a warning, it causes a fatal error meaning that if the require function doesn't return true PHP will stop executing the script there and then and tell you why.

As it says on the PHP reference page: "In other words, use require() if you want a missing file to halt processing of the page. include() does not behave this way, the script will continue regardless."

   
subscribe to newsletter