ファイル書き出し

PHPのシンタックス

  1. HOME
  2. ファイル

データをテキストファイルに読み書きする

SplFileobjectのfwriteを使って、
../data/mytext.txtに147バイトを書き出しました。
ファイルを読む

オープンモードの種類

"b"はバイナリーモードを指し、通常どのモードでも"b"を付加して指定します。ファイルポインタはファイル上の読み書きする位置のことです。
オープンモード 説明
rb 読み書き専用 ファイルポインターは先頭
r+b 読み書き可能 ファイルポインターは先頭
wb 書き込み専用 内容を消して新規に書き込む。ファイルがなければ新規作成
w+b 読み書き可能 それ以外wbと同じ
ab 書き込み専用 追記のみ。ファイルがなければ新規作成
a+b 読み書き可能 読み込み位置はseek()で移動できるが、書き込みは追記のみ
xb 書き込み専用 ファイルを新規作成する。既にファイルがあるとエラー
x+b 読み書き可能 それ以外はxbと同じ
cb 書き込み専用 既存の内容を消さず先頭から書く。ファイルがなければ新規作成
c+b 読み書き可能 それ以外はcbと同じ

例外処理

try {
 例外処理が組み込まれているメソッドを実行する
} catch(Exception $e) {
 エラー処理を行うコード
} finaly {
 エラーがあってもなくても実行するコード
}
※finalyはオプションなので省略可

ファイル書き出しのソースコード

<?php
date_default_timezone_set('Asia/Tokyo');
$date = date("Y/n/j G:i:s", time());
$writedata = <<< "EOD"
ヒアドキュメント
途中で改行しても
変数を使った文章の作成が可能です!!
更新日:$date
EOD;
?>

<!doctype html>
<html lang="ja">

<head></head>

<body>
  <header></header>
  <div class="main-wrapper">
    <?php
    $filename = "../data/mytext.txt"; //保存するファイル名
    try { //ファイルオブジェクトの作成
      $fileobj = new SplFileObject($filename, "wb");
    } catch (Exception $e) {
      echo '<span class="error">エラーがありました</span>';
      echo $e->getMessage();
      exit();
    }
    //ファイルに書き込む
    $written = $fileobj->fwrite($writedata);
    if ($written === false) {
      echo '<span class="error">ファイルに保存できませんでした</span>';
    } else {
      echo "SplFileobjectのfwriteを使って、<br>{$filename}に{$written}バイトを書き出しました。", "<HR>";
      echo '<a href="readFile.php">ファイルを読む</a>';
    }
    ?>
  </div>
</body>

ファイル読み込みのソースコード

<?php
require_once("es.php"); //フォーム~入力データのチェック~で参照してね
?>

<!doctype html>
・・・・・・・↓
・・・・・・・↓
<?php
$filename = "../data/mytext.txt";
try {
  $fileobj = new SplFileObject($filename, "rb");
} catch (Exception $e) {
  echo '<span class="error">エラーがありました</span>';
  echo $e->getMessage();
  exit();
}
//ストリングを読み込む
$readdata = $fileobj->fread($fileobj->getSize());
if (!($readdata === FALSE)) {
  $readdata = es($readdata);
  //改行コードの前に<br>を挿入※HTMLエスケープ後に行う
  $readdata_br = nl2br($readdata, false);
  echo "{$filename}を読み込みました", "<br>";
  echo $readdata_br, "<HR>";
  echo '<a href="writeFile.php">ファイルに書き込む</a>';
} else {
  echo '<span class="error">ファイルを読み込めませんでした</span>';
}
?>