PHP でテキストファイルを読む

Subodh Poudel 2023年1月30日
  1. PHP で fgets() 関数を使用してテキストファイルを 1 行ずつ読み取る
  2. PHP で file() 関数を使用してテキストファイルを 1 行ずつ読み取る
  3. PHP で file_get_contents() および explode() 関数を使用してファイルを 1 行ずつ読み取る
PHP でテキストファイルを読む

この記事では、PHP でテキストファイルを 1 行ずつ読み取る方法を紹介します。

PHP で fgets() 関数を使用してテキストファイルを 1 行ずつ読み取る

fgets() 関数を while ループとともに使用して、PHP でテキストファイルを 1 行ずつ読み取ることができます。この関数は、行がある場合は行を返し、読み取る行がなくなると false を返します。2つのパラメータを取ります。構文は次のとおりです。

fgets($file, $length)

ここで、$file は、正常に開かれたファイルを指すファイルポインタに似ています。オプションの $length オプションは、読み取るバイト数を示します。

open() 関数を使用してファイルを読み取り、while ループを使用して fgets() 関数で各行をループできます。次の内容を含むテキストファイル abc.txt があります。

Hi
How are you
Have a great day 

たとえば、変数 $txt_file を作成し、その中に fopen() 関数を記述します。ファイル abc.txtr モードで開きます。ラインカウンタ変数 $a を作成し、それに値 1 を割り当てます。次に、while ループを作成します。ループの括弧内に、パラメーターとして $text_file を指定して fgets() 関数を記述します。関数をループ内の $line 変数に割り当てます。ループ本体内の $a 変数と連結して、$line 変数を出力します。$a 変数をインクリメントし、ループの外側で、fclose() 関数を使用してファイルストリームを閉じます。

サンプルコード:

<?php
$txt_file = fopen('abc.txt','r');
$a = 1;
while ($line = fgets($txt_file)) {
 echo($a." ".$line)."<br>";
 $a++;
}
fclose($txt_file);
?>

出力:

1 Hi 
2 How are you 
3 Have a great day

PHP で file() 関数を使用してテキストファイルを 1 行ずつ読み取る

file() 関数は、ファイル全体を配列に読み込みます。file() 関数の構文は次のとおりです。

file($filename, $flag, $context)

ここで、$filename は読み取るファイルパスです。$flag オプションはオプションであり、FILE_USE_INCLUDE_PATHFILE_IGNORE_NEW_LINESFILE_SKIP_EMPTY_LINES などのさまざまな定数で構成されます。3つ目もオプションで、コンテキストリソースを定義します。

file() 関数は、配列が存在する場合は配列全体を返すか、false を返します。この関数を使用して、foreach() 関数のヘリを使用してファイルコンテキストを 1 行ずつ読み取ることができます。foreach() 関数はコンテンツ全体をループし、各行を個別に抽出します。

たとえば、ファイルパスを変数 $txt_file に保存します。変数 $lines を記述し、$txt_file をパラメーターとして file() 関数をその変数に格納します。次に、foreach() 関数を使用してファイルの内容をループします。イテレータとして $lines を使用し、値として $num=>$line を使用します。ループ本体の内側に、$num 変数と $line 変数を出力します。

サンプルコード:

$txt_file = 'abc.txt';

$lines = file($txt_file);
foreach ($lines as $num=>$line)
{
 echo 'Line '.$num.': '.$line.'<br/>';
}

出力:

Line 0: Hi 
Line 1: How are you 
Line 2: Have a great day

PHP で file_get_contents() および explode() 関数を使用してファイルを 1 行ずつ読み取る

file_get_contents() 関数は、ファイル全体を文字列に読み込みます。内容が存在する場合はファイル全体を文字列として返すか、false を返します。関数のパラメーターとしてファイルパスを指定できます。explode() 関数は、セパレータを使用して文字列を配列に分割します。explode() 関数の構文は次のとおりです。

explode(separator, $string, $limit)

separator オプションは、値を返すときに $string$limit 要素の数で区切るために使用されます。file_get_contents()explode()、および foreach() 関数を組み合わせて、PHP でテキストファイルを 1 行ずつ読み取ることができます。

たとえば、変数 $contents を作成し、パラメーターにファイルパスを指定して file_get_contents() 関数を記述します。\n 文字を区切り文字として、$contents を文字列として使用して、explode() 関数を使用します。関数を変数 $lines に割り当てます。foreach ループを使用して、$lines$line としてループします。次に、ループ本体の内側に $line を出力します。

以下の例では、$contents 変数は文字列を返します。\n 改行文字を使用して配列に分割し、ループを使用して各行を出力しました。

サンプルコード:

$contents=file_get_contents("abc.txt");
$lines=explode("\n",$contents);
foreach($lines as $line){
 echo $line.'<br>';

}

出力:

Hi 
How are you 
Have a great day
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn