将来簡単に参照できるように、PHP でファイルを読み取るいくつかの方法を整理しました。
1.fread
文字列 fread (int $handle, int $length)
fread() は、ハンドルが指すファイルから最大 length バイトを読み取ります。この関数は、最大 length バイトの読み取り後、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが使用可能になったとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。どの条件が最初に発生したかに応じて異なります。
fread() は読み取った文字列を返すか、エラーが発生した場合は FALSE を返します。
読み込むファイルがローカルの通常ファイルではなく、リモートファイルやストリームファイルの場合、filesizeではこれらのファイルのサイズを取得できないため、この方法は使用できません。この時点で、feof() または fread() の戻り値を使用して、ファイルの終わりが読み込まれたかどうかを判断する必要があります。
例:
または:
2.fgets
string fgets ( int $handle [, int $length ] )
fgets() は、handle が指すファイルから 1 行を読み取り、長さ - 1 バイト以下の文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイト (いずれか最初に発生した方) が読み取られたときに停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。
注: PHP 4.2.0 以降、length パラメータはオプションになり、省略した場合、行の長さは 1024 であるとみなされます。 PHP 4.3 以降、length を省略すると、行の終わりまでストリームからの読み取りが継続されます。ファイル内のほとんどの行が 8KB を超える場合は、スクリプトで最大行長を指定すると、リソースをより効率的に利用できます。 PHP 4.3 以降、この関数はバイナリ ファイルに対して安全に使用できます。以前のバージョンにはありません。
3.fgetss
string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )
fgets と同じ関数ですが、fgetss は読み取ったテキストから HTML タグと PHP タグを削除しようとします。オプションの 3 番目のパラメータを使用して、どのタグを削除しないかを指定できます。
4.ファイル
配列ファイル ( string $filename [, int $use_include_path [, resource $context ]] )
ファイルの内容を配列に読み込みます。配列内の各項目は、改行を含むファイル内の行に対応します。行終了文字が必要ない場合は、rtrim() 関数を使用して改行をフィルタリングできます。
5.readfile
int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )
ファイルを読み取り、出力バッファに書き込みます。ファイルから読み取られたバイト数を返します。 @readfile() として呼び出されない限り、エラー時に FALSE を返し、エラー メッセージを表示します。
6.file_get_contents
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )
ファイルを文字列に読み込みます。 3 番目のパラメーター $context は、リモート ファイルにアクセスするときのタイムアウトの設定など、いくつかのパラメーターを設定するために使用できます。
さらに、file_get_contents は上記の関数よりもパフォーマンスがはるかに優れているため、file_get_contents を最初に使用する必要があります。ただし、readfile は fopen を呼び出す必要がないため、file_get_contents よりもパフォーマンスが優れているようです (?)。
int fpassthru (リソース $handle)
指定されたファイル ポインターを現在位置から EOF まで読み取り、結果を出力バッファーに書き込みます。
array parse_ini_file ( string $filename [, bool $process_sections ] )
parse_ini_file() は、filename で指定された ini ファイルをロードし、その設定を連想配列として返します。最後の process_sections パラメータを TRUE に設定すると、構成ファイル内の各セクションの名前と設定を含む多次元配列が取得されます。 process_sections のデフォルト値は FALSE です。注:
1. ini ファイル内の値に英数字以外の文字が含まれている場合は、二重引用符 (") で囲む必要があります。
2. null、yes、no、true、false などの一部の予約語は、ini ファイルのキー名として使用できません。 null、no、false の値は「」に相当し、yes と true の値は「1」に相当します。文字 {}|&~![()" もキー名のどこにも使用できず、これらの文字はオプション値で特別な意味を持ちます。
test.ini ファイルの内容:
コードをコピーします
動物 = 鳥
[セカンドセクション]
パス = "/usr/local/bin"
test.phpの内容:
コードをコピーします
コードをコピーします
[パス] => /usr/local/bin
[url] => http://www.example.com/~username
)
)
いくつかのメモ:
2.allow_url_fopen オプションは、fopen カプセル化プロトコルの URL 形式をアクティブにして、ファイルなどの URL オブジェクトにアクセスできるようにします。デフォルトのカプセル化プロトコルは、ftp および http プロトコルを使用したリモート ファイルへのアクセスを提供します。zlib などの一部の拡張ライブラリは、さらに多くのカプセル化プロトコルを登録する場合があります。セキュリティ上の理由から、このオプションは php.ini でのみ設定できます。
3. 特殊文字 (スペースなど) を含む URL を開きたい場合は、URL エンコードに urlencode() を使用する必要があります。