- ベストアンサー
複数の文字列をファイルに書き込むには
過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板で確認画面を作り確認して書込みをさせる掲示板を作っています。 掲示板にタイトルと名前とメッセージを同時に書き込みたいのですが、同時に書き込む方法がわかりません。 下がソースです。(エラーが出る状態です) <?php $title = $_REQUEST["title"]; $title = $title."\n"; $namae = $_REQUEST["namae"]; $namae = $namae."\n"; $body = $_REQUEST["body"]; $body = $body."\n"; ?><html> <head> <title>Sample01</title> </head> <body> <?php $fp = fopen("../php/test1.txt","a"); fwritefwrite($fp,$title,$namae,$body);//ここを変えてみました fclose($fp); echo "書込み確認画面", "<a href=\"./form.php\"></a>"; ?> わかる方おりましたらご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
よく使われる方法は各文字列を特定の区切り文字で連結して1個の文字列にする方法です 区切り文字が , の場合は特別にCSVと呼ばれます 他にもタブなどが使われます。 ただ各文字列に区切り文字と同じ文字がある場合に不都合が出ますのでいろいろな工夫が必要になります。(" "で囲む、大文字のコンマに変換する、タブをスペースに変換する等) <?php $title = $_REQUEST["title"]; $title = str_replace("\t", " ", $title); $namae = $_REQUEST["namae"]; $namae = str_replace("\t", " ", $namae); $body = $_REQUEST["body"]; $body = str_replace("\t", " ", $body); $log = $title . "\t" . $namae . "\t" . $body . "\n"; fwrite($fp, $log); 読み込む場合は $log = fgets($fp); list($title, $namae, $body) = explode("\t", $log); 等で取り出します。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
fwritefwrite($fp,$title,$namae,$body); を fwrite($fp,$title.$namae.$body); とすればとりあえず動くでしょう。 $fpと$titleの間は「,」のままで、その後ろのカンマは「.」に
お礼
大変失礼致しました。 投稿する前に確認を怠ってました。 urlencodeで変数を渡すことも出来るのですね。 大変勉強になりましたありがとうございます。
- TA-HT81S
- ベストアンサー率39% (72/184)
fwritefwrite()関数ってあるのですか? $arg = $title . "," . $namae . "," . $body; fwrite($fp,$arg); したいの? この場合、$titleと$namaeと$bodyには","は使えませんよね。 予め、それぞれurl_encodeしておくのですかね。
お礼
大変失礼致しました。 投稿する前に確認を怠ってました。 urlencodeで変数を渡すことも出来るのですね。 大変勉強になりましたありがとうございます。
- swqamy
- ベストアンサー率37% (11/29)
質問なのですがそれはtxtファイルにcsvファイル形式で書き込んで 読み込む際にsplitで区切って表示するようにするのではだめなんですか?
お礼
CSVについての知識がなく、当初まったく意味がわかりませんでした。ご意見参考にさせていただきます。 ありがとうございました。
お礼
大変わかりやすい説明ありがとうございました。 CSVについての知識が乏しくよくわかっていませんでした。 無事に解決することが出来ました。