ホームページ >バックエンド開発 >PHPチュートリアル >PHP でファイルを読み取るための複数の方法とサンプル チュートリアル、_PHP チュートリアル
PHP でファイルを読み取るための 8 つの方法を共有します。これらは小規模で古典的な方法です。 PHPファイルの操作方法。
PHP でファイルを読み取るいくつかの方法を参考にします。
1.fread
string fread ( int $handle , int $length )
fread() handle が指すファイルから最大 length バイトを読み取ります。この関数は、最大 length バイトの読み取り後、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが使用可能になったとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。どの条件が最初に発生したかに応じて異なります。
fread() は読み取った文字列を返すか、エラーが発生した場合は FALSE を返します。
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");//バイナリ ファイルを読み取るときは、2 番目のパラメータを次のように設定する必要があります'rb'
// filesize でファイル サイズを取得し、ファイル全体を一度に文字列に読み込みます
$contents = fread($handle, filesize ($filename));
fclose($handle);
?> ;
読み込むファイルがローカルの通常ファイルではなく、リモートファイルやストリームファイルの場合、filesizeではこれらのファイルのサイズを取得できないため、この方法は使用できません。このとき、feof() または fread() の戻り値を使用して、ファイルの終端を読み取ったかどうかを判断する必要があります。
例:
$handle = fopen('http://www.jbxue.com', 'r');
$content = '';
while(!feof($handle)) {
$content .= fread($handle, 8080);
}
echo $content;
fclose($handle);
?>
または:
$handle = fopen('http:/ / www.jbxue.com', 'r');
$content = '';
while(false != ($a = fread($handle, 8080))){//false を返すと、ファイルが読み込まれました
$content .= $a;
}
echo $content;
fclose($handle);
?>
2.fgets
string fgets ( int $handle [, int $length ] )
fgets () from handle 指定されたファイルから行を読み取り、最大 length - 1 バイトの長さの文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイト (いずれか最初に発生した方) が読み取られたときに停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。
$handle = fopen('./file.txt', 'r');
while(!feof($handle)){
echo fgets($handle, 1024);
}
fclose( $handle);
?>
注: length パラメータは PHP 4.2.0 以降オプションになります。省略した場合、行の長さは 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 番目のパラメータは、どのタグを削除しないかを指定します。
$handle = fopen('./file.txt', 'r');
while(!feof($handle)){
echo fgetss($handle, 1024, '
' );
}
fclose($handle);
?>
4.file
array file ( string $filename [, int $use_include_path [, resource $context ]] )
ファイルの内容を配列、array に読み込みますのエントリは、改行を含むファイル内の行に対応します。行終了文字が必要ない場合は、rtrim() 関数を使用して改行をフィルタリングできます。
$a = file('./file.txt');
foreach($a as $line => $content){
echo 'line '.($line + 1).': '.$content;
}
?>
5.readfile
int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )
ファイルを読み取り、出力バッファに書き込みます。ファイルから読み取られたバイト数を返します。 @readfile() として呼び出されない限り、エラー時に FALSE を返し、エラー メッセージを表示します。
$size = readfile('./file.txt');
echo $size;
?>
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 よりもパフォーマンスが優れているようです (?)。
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 1 //タイムアウトを設定します
)
)
echo file_get_contents("http:// www.jbxue.com/", 0, $ctx);
?>
7.fpassthru
int fpassthru ( resource $handle )
指定されたファイル ポインタを現在位置から EOF まで読み取り、結果を出力バッファに書き込みます。
header("Content-Type:text/html;charset=utf-8");
$handle = fopen('./test2.php', 'r');
fseek($handle, 1024);//1024 バイトへのポインタを見つけます
fpassthru($handle);
?>
8.parse_ini_file
array parse_ini_file ( string $filename [, bool $process_sections ] )
parse_ini_file() は、ini で構成されるファイルをロードしますfilename で指定されたファイルを取得し、その設定を連想配列として返します。最後の process_sections パラメータを TRUE に設定すると、構成ファイル内の各セクションの名前と設定を含む多次元配列が取得されます。 process_sections のデフォルト値は FALSE です。
注:
1. ini ファイル内の値に英数字以外の文字が含まれる場合は、二重引用符 (") で囲む必要があります。
2. 一部の予約語は、ini ファイル内のキー名として使用できません。 : null、yes、no、true、および false。null、no、および false の値は「」と同等であり、yes と true の値は「1」と同等です。文字 {}|&~![ ()" は名前のキーにも使用できません。また、これらの文字はオプション値において特別な意味を持ちます。
test.ini ファイルの内容:
; これはサンプル設定ファイルです
; コメントは php.ini のように ';' で始まります
one = 1
five = 5
animal = BIRD
[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username
test.php content: