リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

7-3. php実践③ファイルの操作

7章続き進めます。21章までまだまだこんだけある。笑
やっと1/3ってとこかな。

今回は、ファイルやディレクトリを操作する関数について勉強します。
webサーバーにデータを保持する方法ではなく、ハードディスクにあるファイルに直接アクセスするほうが便利な時もありその時に使える関数について紹介していきます。

1-1.ファイルを読み込む


ファイルを読み込む際には『file_get_contents関数』を使います。
$変数=file_get_contents("ファイル名またはURL");

text.txtというファイルを読み込んでみます。

<?php
$filename="text.txt";
if (is_readable($filename))
{
$contents = file_get_contents($filename);
echo $contents;
}
else{
echo$filename,"は読み込めません。";
}
?>

結果としてローカルサーバーにおいたtext.txtを読み込んで「こんにちは」と表示がでます。
f:id:taro-blog2323:20160821131002p:plain
また、ローカルサーバーにこのファイルがないときは以下が表示されます。
f:id:taro-blog2323:20160821130907p:plain

1-2.ファイルにデータを書き込む


ファイルにデータを書き込むときは『file_put_contents関数』を使用します。この関数には、fopen、fwrite、fread、fcloseの機能により読み込みの処理を実行します。
各概要を以下にまとめました。

読み込み関数 機能
fopen関数 ファイルを開く際の呼び出し。ここでファイルオープン時の呼び出し方法(読み込み専用、書き込み専用等)を指定できる
fwrite関数 他の関数を呼び出してファイルの書き込みを行う
fread関数 他の関数を呼び出してファイルの読み込みを行う
fclose関数 ファイルを閉じて終了する

試しにサンプルを作ってみました。テキストファイルにはHelloWorldと書いてあります。

<?php
$fh=fopen ("text.txt",'r' ) or
die("このファイルは読み込めません");
$text = fread($fh,7);
fclose($fh);
echo $text;
?>

結果はこちら。
f:id:taro-blog2323:20160821135037p:plain
7文字目まで表示されるはずが、、、4文字やんか。。。。なぜだ。。。
調べてみると7と書いたから7文字表示されるのではなく、バイト単位らしいです、これ。7バイト分読み込んでねってなってるってことか。。

1-3.ファイルをコピーする


ファイルをコピーするには『copy関数』を使用します。
text.txtをコピーしてtext2.txtというファイルを作成してみます。
<?php
if (copy("text.txt" , "text2.txt"))
{
echo"コピーに成功しました";
}
else{
echo"コピーに失敗しました";
}
?>

すげー!text2ファイルができてる...
f:id:taro-blog2323:20160821140426p:plain
こんな些細なことでも感動してしまいます。

1-4.ファイルを削除する


ファイルを削除するときは『unlink関数』を使います。unlink関数にファイル名を指定して実行すると、ファイルが削除され正常に削除されるとTRUEが表示されます。
先ほどコピーしたtext2.txtを削除してみます。
<?php
$filename="text2.txt";
if(is_file($filename)&& unlink($filename))
{echo$filename."を削除しました";
}else{
echo$filename."は削除できません";
}
?>

結果は期待通り、text2.txtが削除されました。すげー。
上記コードでは、text2.txtがあるのかをis_file関数で調べて正常に削除できたらTRUEと評価するようにしました。

一旦いじょう。
明日また更新します。ふぁいとー♪( ´θ`)ノ