PHP を使用してファイルを 1 行ずつ読み取る理由は 2 つあります。
file()
を使用しますPHP の file()
関数を使用すると、ファイル全体を一度に配列に読み取ることができます。配列要素はファイルの個々の行です。したがって、配列を反復処理することで、ファイル内の行を反復処理できます。この関数は 3 つのパラメータを受け入れます:
FILE_USE_INCLUDE_PATH
、FILE_IGNORE_NEW_LINES
、および FILE_SKIP_EMPTY_LINES## #。
FILE_SKIP_EMPTY_LINES フラグを使用して、ファイル内のすべての空行をスキップします。
FILE_IGNORE_NEW_LINES を使用して、個々の行から行末を削除することもできます。
false を返します。ファイルが存在しない場合は、
E_WARNING レベルのエラーも表示されます。この機能の使用例を次に示します。
リーリー
リーリー
出力には空の行がいくつかあることがわかります。FILE_SKIP_EMPTY_LINES フラグを使用してそれらを削除できます。また、明らかではないかもしれませんが、上の行には改行が含まれています。そのため、これらの行をエコーするときに独自の改行を追加する必要はありません。
FILE_IGNORE_NEW_LINES フラグを使用して空行を削除できます。
リーリー
リーリー
メモリ使用量を気にしない場合は、file() 関数を使用すると、PHP でファイルを 1 行ずつ読み取る簡単な方法です。ただし、メモリ使用量が問題になる場合は、
file() がファイル全体を一度に配列に読み込むため、より創造的にする必要があります。
を使用します
fgets() 関数を使用することです。必須パラメータが 1 つあり、それは有効なファイル ハンドルです。
fopen() 関数を使用してファイル ハンドルにアクセスします。これは実行したいコードです:
リーリー
$file_handle をパラメータとして受け取り、行を返す関数を定義します。
yield ステートメントを使用していることと、関数
get_all_lines() がジェネレーター関数であることに注意してください。これまで PHP でジェネレーター関数を使用したことがない場合は、それについて読んでみるとよいでしょう。
我们在 get_all_lines()
中使用 feof()
函数来检查文件指针是否到达文件末尾。只要我们不在文件末尾,我们就会屈服。通过运行上面的代码,您应该得到以下输出:
1. The Project Gutenberg eBook of Pride and Prejudice, by Jane Austen 2. 3. This eBook is for the use of anyone anywhere in the United States and 4. most other parts of the world at no cost and with almost no restrictions 5. whatsoever. You may copy it, give it away or re-use it under the terms 6. of the Project Gutenberg License included with this eBook or online at 7. www.gutenberg.org. If you are not located in the United States, you 8. will have to check the laws of the country where you are located before 9. using this eBook. 10. 11. Title: Pride and Prejudice 12. 13. Author: Jane Austen 14. 15. Release Date: June, 1998 16. [Most recently updated: August 23, 2021]
输出看起来与我们上一节中的相同。这次唯一的区别是您不再面临内存不足的危险。
我之前提到过 fgets()
将允许您一次读取文件的一行,并且它只需要一个指向您要读取的文件的文件指针的参数。在这种情况下,内存消耗取决于行的长度,并且内存不足的可能性很小。
但是,假设您正在阅读一个包含异常长行的文本文件。然后,您可以将可选的第二个参数传递给 fgets()
函数,该函数指定要读取的字符数。然后,它将在停止之前从文件中读取 length - 1
字节。如果遇到新行或文件末尾,它将提前停止。这使您可以更好地控制代码的内存消耗。
我在本教程中讨论了两种使用 PHP 逐行读取文件的方法。还有几种方法可以做到这一点,但这两种方法几乎可以满足您的所有需求。当内存消耗不是问题时,请使用 file()
函数,如果您想节省内存,请使用 fgets()
和生成器函数。
以上がPHPを使用してファイルを1行ずつ読み取りますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。