Home >Backend Development >PHP Tutorial >Write to Files and Read Files With PHP
This tutorial will introduce several important file read and write functions in PHP, which are enough to meet your basic read and write needs. You will learn how to read files, write files, write text files, and check if the files exist.
As a PHP developer, file processing is an action you often need to do.
You can use PHP file processing functions to manipulate files in many ways. These functions can be used to build a variety of functions in your application, from custom error logging to storing cached files. Examples of utility tools that you can build with these functions include:
Luckily, PHP provides many functions to read and write file data. In this tutorial, I will show you the easiest way to read local or remote file data and how to use flags to write files accurately.
$filename = 'https://www.gutenberg.org/cache/epub/1228/pg1228.txt'; $book_content = file_get_contents($filename); file_put_contents('Biology/Evolution/On the Origin of Species [Charles Darwin].txt', $book_content, LOCK_EX);
You can save the content of a website such as web pages or Wikipedia in a similar way. If you need to understand HTML or parse HTML content you just saved locally, you can refer to a tutorial similar to "Parase HTML with DiDOM", which will help you automatically get links, image files, or any other such information from a web page.
Now let's go back to the local file. Suppose you have a bunch of text files and you want to analyze their content to see information such as the most common words. This can be easily implemented using many built-in PHP functions.
$filename = 'On the Origin of Species [Charles Darwin].txt'; $book_content = file_get_contents($filename); $book_content_lowercase = strtolower($book_content); $individual_words = explode(' ', $book_content_lowercase); echo "该书大约有 " . count($individual_words) . " 个单词:" . substr($filename, 0, -4) . "。\n"; $word_frequency = array_count_values($individual_words); echo "该书中共有 " . count($word_frequency) . " 个独特的单词。\n"; echo "单词'Elephant'在书中出现了 " . $word_frequency["elephant"] . " 次。\n"; echo "单词'Ant'在书中出现了 " . $word_frequency["ant"] . " 次。\n"; if (isset($word_frequency["evolution"])) { echo "单词'Evolution'在书中出现了 " . $word_frequency["evolution"] . " 次。\n"; } else { echo "单词'Evolution'在书中一次也没有出现。\n"; } arsort($word_frequency); echo "该书中使用最多的单词是:'" . key($word_frequency) . "'。\n"; /* 以上所有代码的输出 该书大约有 147520 个单词:On the Origin of Species [Charles Darwin]。 该书中共有 22758 个独特的单词。 单词'Elephant'在书中出现了 3 次。 单词'Ant'在书中出现了 6 次。 单词'Evolution'在书中一次也没有出现。 该书中使用最多的单词是:'the'。 */
We convert all text to lowercase and assume that each word breaks in spaces. Then use the fread
and fread()
functions to convert the text into an array.
fopen
function.
fopen
function is used to get the file system pointer.
fopen
function. fwrite
Functionfwrite
Function
Let's look at the following example to see how fwrite
works.
$file_handle = fopen('/home/tutsplus/files/tmp.txt', 'a+'); fwrite($file_handle, 'Tuts+ is a great online resource to learn skills you want!'); fwrite($file_handle, "\n"); fwrite($file_handle, 'Visit tutsplus.com to know more!'); fclose($file_handle);
First, we open the a
/home/tusplus/files/tmp.txt file in mode, which opens the file for reading and writing, and the file pointer is at the end of the file. Therefore, our content will be appended to the end of the file, after any other content. Next, we use the fwrite
function to write a string.
As shown in the above example, you can use the fwrite
function to write a series of strings multiple times before closing the file.
Finally, we use the fclose
function to close the file. It only accepts one parameter, the file pointer you want to close. Once the file operation is completed, it is always recommended to use the fclose
function to close the file.
There are many other ways to read and write file data in PHP. However, file_get_contents()
and file_put_contents()
will meet almost all of your basic needs without adding unnecessary complexity.
You may only encounter the problem with file_get_contents()
when the file you are reading is very large (e.g., size is 2GB or larger). This is because file_get_contents()
will load the entire file into memory immediately, and for such a large file, it is likely to run out of memory. In this case, you have to rely on functions like fgets()
and fread()
to read a small part of the file at once.
The above is the detailed content of Write to Files and Read Files With PHP. For more information, please follow other related articles on the PHP Chinese website!