ホームページ >バックエンド開発 >PHPチュートリアル >毎日新しいPHP関数を学ぶ(2) fgetcsv()/fgets()

毎日新しいPHP関数を学ぶ(2) fgetcsv()/fgets()

WBOY
WBOYオリジナル
2016-06-23 13:35:33895ブラウズ

ファイルの読み取りと書き込みは一般的なアクションであり、ファイルを読み取るための関数は文字通り何千もあり、複雑なものもあれば単純なものもあります。最も一般的に使用され便利なものは file_get_contents() と file_put_conents() です。ファイルを開いたり閉じたりする必要はありません。
ただし、非常に大きなファイルを読み取る場合、file_get_contents() はすべての内容をメモリに読み取るため、メモリ オーバーフローが発生します。ループで 1 行ずつ読み取るのが最適です。 fgetcsv() は csv ファイルの 1 行を読み取るために使用され、fgets() は通常のファイルを読み取るために使用されます。

fgetcsv()

csv は、各フィールドが「,」で区切られ、各行が「n」で区切られた特別にフォーマットされたフォームテキストファイルです。 fgetcsv を使用して各フィールドを読み取ることも、fgets を使用して各行を読み取り、explode(‘,’,$data) を使用して各行のデータを分離することもできます。
fgetcsv ? ファイル ポインタから 1 行を読み取り、CSV フィールドを解析します

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [ , string $escape = '' ]]]] )

Parameters

handle
fopen()、popen() または fsockopen() によって生成された有効なファイル ポインターを受け入れます
長さ
は、 CVS ファイル。このパラメータは PHP 5 ではオプションです。このパラメータを省略した場合 (PHP 5.0.4 以降のバージョンでは 0 に設定)、長さに制限はありませんが、実行効率に影響する可能性があります。区切り文字 (1 文字のみ許可)
囲み
フィールド ラッパーの設定 (1 文字のみ許可)
エスケープ
エスケープ文字の設定 (1 文字のみ許可)、デフォルトはバックスラッシュ

注: CSV の文字長フィールドが設定された長さより大きい場合、関数は毎回その長さの文字のみを読み取り、インデックス 0 の配列を返します。区切り文字「,」が出現すると、区切り文字の後の文字列はブロックされます
example

<?phpfile_put_contents('test.csv','user1111,user222'."\n".'user3333,user4444');if (($handle = fopen("test.csv", "r")) !== FALSE) {    while (($data = fgetcsv($handle, 6, ",")) !== FALSE) {        echo $data[0] . "<br />\n";    }    fclose($handle);}?> 

上記は、

user11

11

r222
user33
33
r4444

fgets()

fgets ? ファイルポインターから行を読み取ります

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

Parameters

handle ?

ファイル ポインターが必要です 有効にするには、次の条件が必要ですfopen() または fsockopen() によって正常にオープンされた (fclose() によってまだ閉じられていない) ファイルを指します。


length

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

注:

PHP 4.3 以降、行の長さは 1024 であると想定され、行の終わりが 8KB を超えるまでデータがストリームから読み取られ続けるため、リソースを使用する方が効率的です。スクリプトで最大行長を指定することによって。

戻り値

ポインタハンドルが指すファイルから length - 1 バイトを読み取った後の文字列を返します。 ファイル ポインタにデータが存在しない場合は FALSE を返します。

エラーが発生した場合は FALSE を返します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。