本教程将介绍PHP中几个重要的文件读写函数,足以满足您基本的读写需求。您将学习如何读取文件、写入文件、写入文本文件以及检查文件是否存在。
作为PHP开发者,文件处理是您经常需要执行的操作。
您可以使用PHP文件处理函数以多种方式操作文件。这些函数可用于构建应用程序中的各种功能,从自定义错误日志记录到存储缓存文件。您可以使用这些函数构建的实用工具示例包括:
幸运的是,PHP提供了许多函数来读取和写入文件数据。在本教程中,我将向您展示读取本地或远程文件数据的最简单方法,以及如何使用标志来精确地写入文件。
$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);
您可以以类似的方式保存网页或维基百科等网站的内容。如果您需要理解HTML或解析刚刚本地保存的HTML内容,您可以参考类似于“使用DiDOM解析HTML”的教程,这将帮助您自动从网页中获取链接、图像文件或任何其他此类信息。
现在让我们回到本地文件。假设您有一堆文本文件,并且您想分析它们的内容以查看诸如最常见的单词等信息。这可以使用许多内置的PHP函数轻松实现。
$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'。 */
我们将所有文本转换为小写,并假设每个单词都在空格处断开。然后使用fread
和fread()
函数将文本转换为数组。
fopen
函数。
fopen
函数的第一个参数用于获取文件系统指针。
fopen
函数的使用示例。fwrite
函数fwrite
函数
让我们来看下面的例子,了解fwrite
是如何工作的。
$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);
首先,我们以a
模式打开了/home/tutsplus/files/tmp.txt文件,该模式打开文件进行读写,文件指针位于文件末尾。因此,我们的内容将附加到文件的末尾,位于任何其他内容之后。接下来,我们使用fwrite
函数写入一个字符串。
如上例所示,您可以多次使用fwrite
函数来写入一系列字符串,然后再关闭文件。
最后,我们使用fclose
函数关闭文件。它只接受一个参数,即您要关闭的文件指针。一旦完成文件操作,始终建议使用fclose
函数关闭文件。
在PHP中还有许多其他读取和写入文件数据的方法。但是,file_get_contents()
和file_put_contents()
将满足您几乎所有基本需求,而不会增加不必要的复杂性。
您可能只在读取的文件非常大(例如大小为2GB或更大)时才会遇到file_get_contents()
的问题。这是因为file_get_contents()
会立即将整个文件加载到内存中,并且对于如此大的文件,很可能会耗尽内存。在这种情况下,您必须依赖fgets()
和fread()
等函数来一次读取文件的一小部分。
以上是写入文件并使用PHP读取文件的详细内容。更多信息请关注PHP中文网其他相关文章!