ホームページ >バックエンド開発 >PHPチュートリアル >クイックヒント:PHPでローカルファイルを読み取る方法
PHPは、ローカルファイル操作に3つのネイティブ関数を提供します:file()
、file_get_contents()
、fopen()
。これらの機能を中心に完全なライブラリが構築されていますが、それらは依然としてPHPファイルを迅速に操作する好ましい方法です。
最初にこれらの機能の機能を理解し、次にそれらの作業例を調べます。
file()
およびfile_get_contents()
file()
およびfile_get_contents()
は非常に同様に機能します。彼らはすべてファイル全体を読みます。ただし、file()
はファイルを配列に読み取り、file_get_contents()
はファイルを文字列に読み取ります。どちらの機能もバイナリセーフです。つまり、あらゆるタイプのファイルコンテンツに使用できます。
file()
を使用する場合は特に注意してください。返す配列はnewlinesで分離されますが、各要素は引き続き新しいラインで取り付けられます。
fopen()
fopen()
関数は完全に異なって動作します。ファイルを読み取るか書き書き込むストリームとして機能するファイル記述子を開きます。
PHPマニュアルはこれを説明しています:
最も単純な形式では、ストリームはストリーミング可能な動作を示すリソースオブジェクトです。つまり、それは線形方法でそれから読み込んだり書いたりすることができ、
fseek()
を使用してストリームのどこにでもジャンプすることが可能かもしれません。
単純に言えば、fopen()
を呼び出すことは何もしません、それはストリームのみを開きます。
ストリームを開いてファイルハンドルを持っている場合、fread()
やfwrite()
などの他の機能を使用してファイルを操作できます。完了したら、fclose()
を使用してストリームを閉じることができます。
次の例を表示します:
<code class="language-php"><?php $filepath = "/usr/local/sitepoint.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle);</code>
上記の関数はファイルをより詳細に制御することができますが、PHPドキュメントに記載されているとおり、file()
またはfile_get_contents()
関数よりもはるかに低いです。
は、ファイルの内容を文字列に読み取るための好ましい方法です。オペレーティングシステムがサポートしている場合、メモリスワップテクノロジーを使用してパフォーマンスを向上させます。
file_get_contents()
非常に使いやすいです:file_get_contents()
<code class="language-php"><?php $file_contents = file_get_contents('./file.txt');</code>これにより、
のコンテンツがfile.txt
に読み取られます。 $file_contents
<code class="language-php"><?php $file_contents = file_get_contents('./file.txt', FALSE, NULL, 20, 14);</code>これは、20番目の文字から始まる
14文字を読みます。 file.txt
のすべてのパラメーターの詳細については、公式ドキュメントを参照してください。 file_get_contents()
PHPでローカルファイルを読み取るためのFAQ
file_get_contents()
の違いは何ですか? fopen()
およびfile_get_contents()
はどちらもPHPのファイルを読み取るために使用されますが、それはわずかに異なって動作します。 fopen()
ファイルを文字列に読み取り、ファイル全体を単一の文字列として返します。この関数はシンプルで使いやすいですが、多くのメモリを消費できるため、大きなファイルには適していません。一方、file_get_contents()
はファイルまたはURLを開き、fopen()
やfgets()
などの他のファイル関連機能で使用できるリソースを返します。この関数は、ファイルが行ごとに読み取られるため、大きなファイルの方が柔軟で効率的です。 fwrite()
関数を使用して、ファイルが読み取れようとする前に存在するかどうかを確認することです。また、file_exists()
is_readable()
PHPのリモートサーバーからファイルを読み取ることはできますか?
関数(ローカルファイルパスの代わりにURLを使用)を使用してリモートサーバーからファイルを読み取ることができます。ただし、セキュリティ上の理由から、この機能は一部のサーバーで無効になる場合があります。ファイルのfile_get_contents()
設定を表示することで有効になっているかどうかを確認できます。 fopen()
php.ini
PHPでファイルの特定の行を読み取る方法は? allow_url_fopen
PHPでバイナリモードでファイルを読み取る方法は? file()
fopen()
PHPでCSVファイルを読み取る方法は? fread()
PHPは、ファイルを逆に読み取るための組み込み関数を提供しませんが、これをfile()
関数を使用してアレイに読み取り、array_reverse()
関数を使用して配列を逆にすることでこれを行うことができます。
デフォルトでは、PHPはそれらを読み取るときにファイルをロックしません。ただし、ファイルがロックされていないことを確認する必要がある場合は、ファイルを読み取る前にLOCK_SH
フラグを使用してflock()
関数を使用できます。この関数は、共有ロックの取得を試み、他のプロセスが同時にファイルを読み取ることができます。
PHPで大規模なファイルを効率的に読み取るには、fopen()
関数を使用してファイルを開き、ループのfgets()
関数を使用して行ごとに読み取ることができます。この方法は、ファイル全体を文字列または配列に読み取るよりもメモリ節約です。
PHPのファイルを読み取り、コンテンツをブラウザに出力するには、readfile()
関数を使用できます。この関数はファイルを読み取り、それを出力バッファーに書き込み、それをブラウザに送信します。これは、ユーザーにファイル(画像やダウンロード可能なファイルなど)を提供する便利な方法です。
以上がクイックヒント:PHPでローカルファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。