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