file
file_exists(ファイル名)
ファイルorディレクトリが
存在するかどうか調べる
指定したファイルが存在する場合にはTRUE、
存在しない場合にはFALSEを返す。
file_get_contents(ファイル名)
ファイルの全体を読み込み、
内容を文字列として返す
file_put_contents(ファイル名, 文字列)
文字列をファイルに書き込む
指定した文字列を、指定したファイルに書き込む。
書き込みを行うファイルが存在しない場合は、新規にファイルを作成する。存在する場合には既存のファイルを上書きする。
基本的に
file_put_contents(ファイル名, json_encode(文字列))
のように使う。
ファイルに書き込む場合は
json_encodeでPHP型の文字列をJSON形式に変換しないといけない。
なぜかというと、
ファイル(なんとか.txt)は
JSON形式だから。
json_decode(文字列)
JSON文字列を読み解く。
JSON文字列をデコードする。
JSONでエンコードされたデータを、適切なPHPの型として返す。
decode → 暗号を解く、平文に直す、解読する
json_encode(値)
値をJSON形式にして返す。
ファイルの読み込み(解説)
読み込むファイル(.txt)は元々JSON形式で保存されている。
↓
PHPで扱いたい。
↓
PHPで扱える形式に変換する必要ある。
↓
そこで
json_decode(文字列)
を使う。
↓
json_decode関数は、JSON形式の文字列を解釈して、
PHPの文字列や配列といったデータに変換する。
ファイルの書き込み
読み込むファイル(.txt)は
元々JSON形式で保存されているため、
メッセージの配列をJSON形式にする。
↓
そこで
json_encode(値)
を使う。
↓
json_encode(値)関数は、
値をJSON形式にして返す。
ファイル内の文字を表示
// foreach (配列 as ループ内変数)
foreach ($hitokoto as $value) {
echo '<p>', $value, '</p><hr>';
}
投稿されたメッセージをサーバに保存する①
<p>投稿するメッセージを入力してください。</p>
<form action="board-output.php" method="post">
<input type="text" name="message">
<input type="submit" value="投稿">
</form>
<?php
$file = 'memo53.txt';
// ファイルが存在する時だけファイルを読み込む
if (file_exists($file)) {
// file_get_contents(ファイル名)→ファイルの全体を読み込み、内容を文字列として返す
$board = json_decode(file_get_contents($file));
}
$board[] = $_POST['message'];
file_put_contents($file, json_encode($board));
foreach ($board as $message){
echo '<p>',$message,'</p><hr>';
}
?>
<button onclick="history.back()">戻る</button>
投稿されたメッセージをサーバに保存する②
</br>How are you feeling today?
</br>Please select one from these four.
</br>・happy ・normal ・lonely ・sick
<form action="test53.php" method="post">
<input type="text" name="mood">
<input type="submit" value="投稿">
</form>
<?php
$file1 = 'memo54.txt';
if(file_exists($file1)){
// json_decode()→JSON形式をPHPの型で返す
$hitokoto = json_decode(file_get_contents($file1));
}
$hitokoto[] = $_POST['mood'];
if($_POST['mood'] == 'happy'){
$hitokoto[] = 'good!';
}else if($_POST['mood'] == 'normal'){
$hitokoto[] = 'ok';
}elseif ($_POST['mood'] == 'lonely'){
$hitokoto[] = 'Are you ok?';
}elseif ($_POST['mood'] == 'sick'){
$hitokoto[] = 'Cheer up!';
}
// file_put_contents(ファイル名, 文字列)
// 指定した文字列を指定したファイルに書き込む
// json_encode()→JSON形式にして返す
file_put_contents($file1, json_encode($hitokoto));
// foreach (配列 as ループ内変数)
foreach ($hitokoto as $value) {
echo '<p>', $value, '</p><hr>';
}
?>
<button onclick="history.back()">戻る</button>