PHP でファイルを読み取るための 8 つの方法とコード例、_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:21:25
オリジナル
841 人が閲覧しました

PHP でファイルを読み取るための 8 つのメソッドとコード例、

将来簡単に参照できるように、PHP でファイルを読み取るいくつかの方法を整理しました。

1.fread

文字列 fread (int $handle, int $length)

fread() は、ハンドルが指すファイルから最大 length バイトを読み取ります。この関数は、最大 length バイトの読み取り後、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが使用可能になったとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。どの条件が最初に発生したかに応じて異なります。

fread() は読み取った文字列を返すか、エラーが発生した場合は FALSE を返します。

コードをコピーします コードは次のとおりです:

$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");//バイナリ ファイルを読み取るときは、2 番目のパラメータを 'rb' に設定する必要があります

// filesize を通じてファイル サイズを取得し、ファイル全体を一度に文字列に読み込みます
$contents = fread($handle, ファイルサイズ ($filename));
fclose($handle);
?>

読み込むファイルがローカルの通常ファイルではなく、リモートファイルやストリームファイルの場合、filesizeではこれらのファイルのサイズを取得できないため、この方法は使用できません。この時点で、feof() または fread() の戻り値を使用して、ファイルの終わりが読み込まれたかどうかを判断する必要があります。

例:

コードをコピーします コードは次のとおりです:

$handle = fopen('http://www.baidu.com', 'r');
$content = '';
While(!feof($handle)){
$content .= fread($handle, 8080);
}
$content をエコー;
fclose($handle);
?>

または:

コードをコピーします コードは次のとおりです:

$handle = fopen('http://www.baidu.com', 'r');
$content = '';
While(false != ($a = fread($handle, 8080))){// false を返すと、ファイルの終わりが読み取られたことを示します
$content .= $a;
}
$content をエコー;
fclose($handle);
?>

2.fgets

string fgets ( int $handle [, int $length ] )

fgets() は、handle が指すファイルから 1 行を読み取り、長さ - 1 バイト以下の文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイト (いずれか最初に発生した方) が読み取られたときに停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。

コードをコピーします コードは次のとおりです:

$handle = fopen('./file.txt', 'r');
While(!feof($handle)){
エコー fgets($handle, 1024);
}
fclose($handle);
?>

注: 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 番目のパラメータを使用して、どのタグを削除しないかを指定できます。

コードをコピーします コードは次のとおりです:

$handle = fopen('./file.txt', 'r');
While(!feof($handle)){
echo fgetss($handle, 1024, '
');
}
fclose($handle);
?>

4.ファイル

配列ファイル ( string $filename [, int $use_include_path [, resource $context ]] )

ファイルの内容を配列に読み込みます。配列内の各項目は、改行を含むファイル内の行に対応します。行終了文字が必要ない場合は、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');
エコー $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(
'タイムアウト' = & gt; タイムアウトを設定します
)
)
); echo file_get_contents("http://www.baidu.com/", 0, $ctx); ?>


7.fパススルー

int fpassthru (リソース $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() は、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 ファイルの内容:



コードをコピーします

コードは次のとおりです: ; これはサンプル設定ファイルです
; コメントは php.ini のように ';' で始まります

[最初のセクション]
1 = 1

5 = 5

動物 = 鳥

[セカンドセクション]
パス = "/usr/local/bin"

URL = "http://www.example.com/~ユーザー名




test.phpの内容:


コードをコピーします

コードは次のとおりです: $config = parse_ini_file('./test.ini', ture);
print_r($config);
?>


出力内容:


コードをコピーします

コードは次のとおりです:

配列
(
[最初のセクション] => (
[1] => 1
[5] => 5
[動物] => )

[second_section] => 配列 (

[パス] => /usr/local/bin
[url] => http://www.example.com/~username )

)


いくつかのメモ:

1. バイナリ ファイルを処理するときは、システムがそれを必要としない場合でも、b フラグの使用を奨励します。これにより、スクリプトの移植性が向上します。

2.allow_url_fopen オプションは、fopen カプセル化プロトコルの URL 形式をアクティブにして、ファイルなどの URL オブジェクトにアクセスできるようにします。デフォルトのカプセル化プロトコルは、ftp および http プロトコルを使用したリモート ファイルへのアクセスを提供します。zlib などの一部の拡張ライブラリは、さらに多くのカプセル化プロトコルを登録する場合があります。セキュリティ上の理由から、このオプションは php.ini でのみ設定できます。

3. 特殊文字 (スペースなど) を含む URL を開きたい場合は、URL エンコードに urlencode() を使用する必要があります。

http://www.bkjia.com/PHPjc/858749.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/858749.html技術記事 PHP でファイルを読み取るための 8 つの方法とコード例 将来簡単に参照できるように、PHP でファイルを読み取るためのいくつかの方法を整理しました。 1.fread string fread ( int $handle , int $length ) fread(...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート