PHPのfread()関数を使用し固定文字数の読み取ってみます。
fread()関数は、バイナリセーフなファイルの読み込みが可能です。バイナリセーフとは、NULLバイト(\x00や\0)が文字列に入った場合でも、正しく取り扱うことができます。
また、fread()関数を使用することで、ファイルから指定された文字数を読み取ることができます。
■基本的な構文
fread(file handle, length in bytes)
file handleは、どのファイルを処理しているかを管理するための名前を指定します。
length in bytesは、読み取るバイト数(単位)を指定します。
■環境
・Windows10
・WampServer Version 3.2.3 64bit
・PHP Version 7.3.21
■PHPのfread()関数を使用し固定文字数の読み取る
では、PHPのfread()関数を使用し固定文字数の読み取ってみます。
■コード
<html lang="ja">
<head>
<title>fread()関数を使用し固定文字数の読み取る</title>
</head>
<body>
<?php
$file = "C:/wamp64/www/project/test.txt";
if(file_exists($file)){
$handle = fopen($file, "r") or die("エラー: ファイルを開くことができません");
$content = fread($handle, "5");
fclose($handle);
echo $content;
} else{
echo "エラー: ファイルが存在しません";
}
?>
</body>
</html>
今回はfileという変数を宣言し、その中でtest.txtというファイルを指定し格納します。
次にif文を使用し、file_exists()関数で、file変数の中に格納したファイルが存在するかチェックします。存在する場合(真・True)は、fopen()関数で、ファイルを”r”(読み込み)で開きます。開いた場合、die()関数でエラーが発生した場合の処理を指定します。
次に、contentという変数を宣言し、その中でfread()関数を使用し、fopen()関数で開いたファイルを読み込みます。この際にfread()関数の括弧内の第2の引数,パラメーターで、読み取るバイト数(単位)を指定します。今回は「5」としています。
ファイルの中身を開いて読み込んだデータ(content変数に格納)をecho文で出力します。
ちなみに、if文を使用し、file_exists()関数で、file変数の中に格納したファイルが存在しない場合(else)は、echo文を使用し、エラーの文字列を出力します。
なお、test.txtというファイルの中身を開いて読み込みますが、ファイルの中身は上記の内容が記述されています。
■実行
では、このスクリプトを「read_number_of_characters.php」という名前で保存し、実行させてみます。
実行させてみると、指定したファイルが開かれ中身のデータ(文字列)が読み取られ、その後fread()関数を使用したことで、指定したバイト数(単位)のデータ(文字列)が出力されました。
今回、データ(文字列)は英語でしたが、日本語でも読み取ることは可能です。可能ですが、指定したバイト数(単位)によっては、文字化けする場合があります。
コメント