![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ホームページ内の部分的な文章をブラウザ上で編集できるようにしたいのです。
その文章をテキストファイルに保存して、PHPファイルから、文章を編集する方法について教えてください。
以下は、ネット上で調べて、設定ファイルを編集するソースを利用させて頂いたものです。
イメージは、これで問題ないのですが、以下の場合、改行が含まれる文章の場合は動作しないのです。
設定ファイルを編集するように作られているので仕方ないのかなと思いますが、改行を含んだ文章も利用できるようになりますでしょうか?
##edit.php
<?php
$ini = parse_ini_file('config.ini');
if ($HTTP_POST_VARS['data1']) $ini['data1'] = $HTTP_POST_VARS['data1'];
if ($HTTP_POST_VARS['data2']) $ini['data2'] = $HTTP_POST_VARS['data2'];
if ($HTTP_POST_VARS['data3']) $ini['data3'] = $HTTP_POST_VARS['data3'];
$fp = fopen('config.ini', 'w');
foreach ($ini as $k => $i) fputs($fp, "$k=$i\n");
fclose($fp);
?>
<html>
<title>テキストファイルのデータ更新</title>
</head>
<body>
<form method="post" action="edit.php">
data1の変更 - <input type="text" name="data1" value="<?php print $ini['data1'] ?>"><br>
data2の変更 - <input type="text" name="data2" value="<?php print $ini['data2'] ?>"><br>
data3の変更 - <input type="text" name="data3" value="<?php print $ini['data3'] ?>"><br>
<input type="submit" value="送信">
</form>
</body>
</html>
##config.ini の中身
data1=タイトルです。
data2=サブタイトルです。
data3=本文です。
↑改行した文章も対応したい。。iniファイルをtxtファイルにしないとだめ?
No.2ベストアンサー
- 回答日時:
単に input を単純に textarea にすると、改行も含めて記録はされるが、parse_ini_file で読み出したときに、改行があると、そこから先は読み込まれないようです。
これを防止するために、改行コードを<br>などに変換してしまい、また読み出すときに改行コードに戻してやれば大丈夫です。
<?php
$ini = parse_ini_file('config.ini');
if ($HTTP_POST_VARS['data1']) $ini['data1'] = $HTTP_POST_VARS['data1'];
if ($HTTP_POST_VARS['data2']) $ini['data2'] = $HTTP_POST_VARS['data2'];
if ($HTTP_POST_VARS['data3']) $ini['data3'] = $HTTP_POST_VARS['data3'];
$fp = fopen('config.ini', 'w');
foreach ($ini as $k => $i) {
$i = preg_replace("/\r\n|\r|\n/", "<br>", $i);
fputs($fp, "$k=$i\n");
}
fclose($fp);
?>
<html>
<title>テキストファイルのデータ更新</title>
</head>
<body>
<form method="post" action="edit.php">
data1の変更 - <textarea name ="data1" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data1']); ?></textarea><br>
data2の変更 - <textarea name ="data2" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data2']); ?></textarea><br>
data3の変更 - <textarea name ="data3" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data3']); ?></textarea><br>
<input type="submit" value="送信">
</form>
<table>
<tr><td>data1</td><td><?PHP echo preg_replace("/\n/", "<br>\n", $ini['data1']); ?></td></tr>
<tr><td>data2</td><td><?PHP echo preg_replace("/\n/", "<br>\n", $ini['data2']); ?></td></tr>
<tr><td>data3</td><td><?PHP echo preg_replace("/\n/", "<br>\n", $ini['data3']); ?></td></tr>
</table>
</body>
</html>
No.1
- 回答日時:
inputタグでは改行が入力できないという意味でしょうか?
もしそうなら
<input type="text" name="data1" value="<?php print $ini['data1']?>"><br>
の部分を
<textarea name="data1">="<?php print $ini['data1']?></textarea>
とすればよいのではないでしょうか?
ini形式ではなく、自由に編集したいというのなら
parse_ini_fileを使用せず
fileなどを使用してはいかがでしょうか?
この回答への補足
回答有難うございます。
><textarea name="data1">="<?php print $ini['data1']?></textarea>
すみません。こちらの記載ミスです。入力フォームにtextareaを使用することは、理解しています。
>fileなどを使用してはいかがでしょうか?
$ini = parse_ini_file('config.ini');
↓
$ini = file('config.ini');
に変更するだけで、いいのでしょうか?
試してみましたが、エラーは出ないようになりましたが、テキストファイルを確認すると、過去の文章などが、「番号=○○」という形式で残ってしまって、うまくいかないようです。。
↓こんな感じで。
-----------------
0=data1=aaa
1=data2=bbb
2=data3=ccc
data1=あああ
あああ
data2=いいい
data3=ううう
-----------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
配列のポインタ配列のポインタ...
-
Resource id #3 と表示されま...
-
PHPで複雑なCSVを読み込みたい
-
2次元配列から1次元配列へのデ...
-
エラーメッセージ(無効な間接...
-
別ファイルからのランダム抽出...
-
テキストファイルからMySQLに書...
-
PHP 変数を関数に代入する際に...
-
複数行のデータのPOST処理に関して
-
stdClass Objectを連想配列のよ...
-
smartyでページングするには
-
PHPの効率の良いソースの記述に...
-
ヒアドキュメントの中のfor文
-
undefined offset というエラー...
-
PHP初心者ループ
-
PHPでXMLから正規表現で特定の...
-
CSVファイルの最終行のデー...
-
PHPでの単語の出現回数表示
-
文字列の文字一文字ずつを解析...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
Resource id #3 と表示されま...
-
ヒアドキュメントの中のfor文
-
自動で番号を振りたい
-
C言語でCSVファイルの行数を読...
-
配列同士の足し算のループ処理
-
stdClass Objectを連想配列のよ...
-
PHPでCSVの一部の行を編集したい
-
phpを実行するとファイルダウン...
-
行数が30万件ほどあるCSVから、...
-
phpでCSVファイルの中身を多次...
-
php Undefined variableエラー
-
CSVデータの行数カウントをした...
-
csvの内容を行単位で削除したい
-
複数ファイルで、それぞれの行...
-
テキストデータから指定行の削除
-
rubyで複数列のデータを一行に...
-
PHP5でCSVの指定行データだけを...
おすすめ情報