PHP でテキストファイルを読む
- 
          
            PHP で fgets()関数を使用してテキストファイルを 1 行ずつ読み取る
- 
          
            PHP で file()関数を使用してテキストファイルを 1 行ずつ読み取る
- 
          
            PHP で file_get_contents()およびexplode()関数を使用してファイルを 1 行ずつ読み取る
 
この記事では、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.txt を r モードで開きます。ラインカウンタ変数 $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_PATH、FILE_IGNORE_NEW_LINES、FILE_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 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