MySQLおよびAccessデータベースはますますパブリックストレージメディア。しかし、1990年代の初めには、PHPでファイルを操作し、フォーマットされたテキストファイルにレコードをCSV形式で保存し、改行で区切ることが一般的でした。
仕事の基本原則
データベースは便利ですが、すべての開発者は少なくとも、ファイルの読み書き方法に関する基本的な知識を持っている必要があります。おそらく多くの人が質問について考えるでしょう。「なぜこれを知る必要があるのですか?私がファイルを使用する場合、それらはXMLで記述され、パーサーを使用するだけです。」
したがって、ファイルが必要になる理由はいくつかあります。
- バイナリデータ(画像ファイルなど)をBLOB(バイナリラージオブジェクト)データベースに移動します。
- レガシーデータベースまたはアプリケーションからエクスポートされたデータ(メールアドレスなど)をインポートします。
- オフライン処理のために、データベースからテキストファイルに情報をエクスポートします。
ファイルの読み取りと書き込みは基本的な操作です。 文書を読む必要がある場合は、まずそれを開く必要があります。その後、できるだけ多くのコンテンツを読み取り、ファイルを閉じます。ドキュメントに情報を書き込むには、まずドキュメントを開く(または、まだ作成されていない場合は、おそらく作成する)必要があります。その後、必要なデータを書き込み、終了したら閉じます。
また、自動的に開閉する組み込み関数を使用すると便利です。これらはPHP5で使用できます。ファイルの属性、つまりそのプロパティについても理解する必要があります。
彼らは言うことができます:
- サイズについて
- 彼が最後に連絡を受けた時間に関する情報を提供します。
- 所有者等について教えてください
PHPでファイルを操作するためのすべての基本的な属性を学ぶことをお勧めします。これにより、作業が大幅に容易になります。
ファイル履歴
ファイルが最後に編集された日時を知る必要がある場合があります。この場合、fileatime()、filemtime()、filectime()の関数が役に立ちます。
<?php $ formatDate = "D d M Y g:i A"; $ timeA = fileatime($ファイル); $ timeM = filemtime($ファイル); $ timeC = filectime($ファイル); $ファイルをエコーします。 「閲覧されました」。日付($ formatDate、$ timeA)。 "。<br>"; $ファイルをエコーします。 「最後のiノード変更があった」。日付($ formatDate、$ timeM)。 "。<br>"; $ファイルをエコーします。 "変更された"。日付($ formatDate、$ timeC)。 "。";
次のコードは、最終アクセスのタイムスタンプを取得して表示します。
- C:Windowsfile.iniは2018年9月19日午後4時34分に表示されました。
- C:Windowsfile.iniは、2018年10月8日金曜日の午前2時3分に変更されました。
- C:Windowsfil.iniは2017年12月16日火曜日の午前4時34分に変更されました。
filectime()関数は、ファイルに関連するさまざまな情報(たとえば、アクセス権)の変更時間を示し、filemtime()関数は、ファイル自体の変更を示します。
date()関数は、file * time()関数によって返されるUnixタイムスタンプのフォーマットに使用されました。
ファイルかどうか?
PHPが実際にファイルを処理しているかどうかを確認するには、is_file()関数またはis_dir()関数を使用して、それがディレクトリかどうかを確認します。
<?php $ファイルをエコーします。 (is_file($ file)? "": "not")。 "ファイル。<br>"; $ファイルをエコーします。 (is_dir($ file)? "": "not")。 "ディレクトリ。";
コード出力の例:
- C:Windowsfile.iniファイル。
- C:Windowsfile.iniはディレクトリではありません。
したがって、過失によってエラーを回避し、「ファイルではありません」を開かないようにすることができます。 PHPでは、ファイルとディレクトリの操作は似ています。
ファイルの権限
ファイルで作業する前に、ファイルが読み取り可能か書き込み可能かを確認できます。これを行うには、is_writable()およびis_readable()関数を使用します。
<?php $ファイルをエコーします。 (読み取り可能($ファイル)? "": "not")。 "読む。<br>"; $ファイルをエコーします。 (is_writable($ file)? "": "not")。 "書かれている。";
これらの関数はブール値を返し、ファイルに対して操作を実行できるかどうかを説明します。
コードは次の値を画面に出力します:
- C:Windowsfile.iniが読み取られています。
- C:Windowsfile.iniが書き込まれていません。
三項演算子を使用すると、ファイルが使用可能かどうかを示すことができます。
ファイルサイズ
ファイルのサイズを調べるには、filesize()関数を使用します。バイト単位で表示されます。
<?php $ file = "C:Windowsfile.ini"; $ size = filesize($ file); $ファイルをエコーします。 「サイズがあります」。 $サイズ。 "バイト。";
関数は以下を表示します。
- C:Windowsfile.iniのサイズは510バイトです。
ここでWindowsシステムでファイルを使用する1つのニュアンスを強調します。バックスラッシュはエスケープ文字として特別な意味を持っています。これは、別のバックスラッシュを追加して回避する必要があります。
ファイルがまだ作成されていない場合、filesize()関数はFalseとエラーを示します。したがって、最初に、必要なfile_exists()コマンドが存在するかどうかファイルがチェックされます。
<?php $ file = "C:Windowsfile.ini"; if(file_exists($ file)){$ size = filesize($ file); $ファイルをエコーします。 「サイズがあります」。 $サイズ。 "byte。";} else {echo $ file。 " ファイルが見つかりません。";}
file_exists()チェックは、セキュリティのためにほとんど常に含まれるべきです。
ファイルを読む
前のセクションでは、できることを示しました読み取りまたは書き込みを行う前に、作業中のファイルについて学習します。これで、ファイルの内容がどのように読み取られるかを分析できます。
PHPファイルを操作するための関数は、タスクを簡単にします。 この場合、file_get_contents()が必要です。ファイル自体を開いたり閉じたりすることなく、ファイルの内容全体を変数に読み込みます。これは、PHPでは1 GBのデータを一度にアーカイブに読み込むことが常に合理的ではないため、記録ボリュームが比較的小さい場合に便利です。 「.ini」ファイルとfile_get_contents()関数の操作を以下に示します。
<?php $ file = "c:windowsfile.ini"; $ file1 = file_get_contents($ file); echo $ file1;
大きなファイルの場合、または単にスクリプトのニーズに応じて、詳細を自分で処理する方が賢明な場合があります。これは、ファイルを開くと、その中の特定のメモを検索して、好きなだけデータを読み取ることができるためです。 fopen()関数は、ファイルを開くために使用されます。
<?php $ file = "c:windowsfile.ini"; $ file1 = fopen($ file、 "r");
fopen()関数には2つの引数が必要です。
- 開くファイル。
- この場合に使用されるモードは、読み取り用の「r」です。
この関数は、$ file1変数に格納されているファイルへの記述子またはストリームを返します。ファイルを操作するときは、後続のすべてのコマンドで使用する必要があります。
モード | 値 | カーソル位置 | ファイルが存在しない場合? |
r | 読書のみ | ファイルの始まり | エラーが発生します |
w | 記録のみ | ファイルの始まり | 新しいを作成します |
a | 記録のみ | ファイルの終わり | 新しいを作成します |
開いているファイルから一度に1行ずつ読み取るには、fgets()関数を使用できます。
<?php $ file = "c:windowsfile.ini"; $ file1 = fopen($ file、 "r"); {echo fgets($ file1)を実行します。 "<br>";} while(!feof($ file1)); fclose($ file1);
do-while-loopを使用するのは良いことですファイル内の行数を事前に知るための選択。 feof()関数は、ファイルが完了に達したかどうかをチェックし、ファイルの最後の条件に達するまでループが続きます。読み取りが完了したら、fclose()関数を使用してドキュメントを閉じます。
ファイルの記録
でファイルに書き込むときに一般的に使用される2つのモードfwrite()関数の使用: "w"および "a"。 「W」はドキュメントに書き込む必要があることを意味しますが、最初にコンテンツを削除します。「a」-ファイルにすでに存在するものに新しいデータを追加します。必ず正しいオプションを使用してください。
次の例では、録音に「a」モードを使用します。
<?php $ myFile = "files.txt"; $ file1 = fopen($ myFile、 "a"); $出力= "バナナ"。 PHP_EOL; fwrite($ file1、$ output); $出力= "中国"。 PHP_EOL; fwrite($ file1、$ output); fclose($ file1);
まず、ファイル名が変数に割り当てられ、次に追加する「a」モードで開きます。書き込まれるデータは変数$ outputおよびfwrite()に割り当てられ、情報はファイルに追加されます。このプロセスを繰り返して別の行を追加し、次にドキュメントをfclose()を使用して閉じます。
事前定義された定数PHP_EOLは、PHPがテキストファイルで実行されるプラットフォームに固有の改行文字を追加します。
上記のコードを実行した後のファイルの内容は次のようになります。
- バナナ
- 中国
File_put_contents()関数もファイルに書き込みます。ファイル名、書き込まれるデータ、およびデータを追加する必要がある場合はFILE_APPEND定数を使用します(デフォルトのファイルコンテンツが上書きされます)。
上記と同じ例ですが、今回はfile_put_contents()を使用しています。
<?php $ myFile = "files.txt"; file_put_contents($ myFile、 "banana"。PHP_EOL); file_put_contents($ myFile、 "China"。PHP_EOL、FILE_APPEND);
これらの関数は頻繁に使用する必要があるため、覚えておくのが最善です。さらに、PHPファイルを操作するときに、いつかいくつかの複雑なタスクが容易になる場合があります。