
ホームページ内の部分的な文章をブラウザ上で編集できるようにしたいのです。
その文章をテキストファイルに保存して、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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヒアドキュメントの中のfor文
-
array_multisortについて
-
ログファイルが一定行数を超え...
-
VBAでcsvファイルもシートもあ...
-
配列をファイルに書き込む方法
-
配列同士の足し算のループ処理
-
【PHP】csvファイルへの書き出...
-
文字列(丸数字)の文字化けに...
-
pythonのファイルの並びでの読...
-
多次元配列の一次元目の最大値...
-
配列をループでたくさん宣言し...
-
配列をmysqlに保存
-
ファイルから指定行数分だけ読...
-
sortableで並べ替えてDBに保...
-
チェックボックス複数選択 mys...
-
ネストが深い時のforeachはどう...
-
プルダウンメニューにDBの内容...
-
重複する文字を1つにするには?
-
PHPで配列をPOSTデータで送った...
-
phpでforeachの中にforeachがあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvの内容を行単位で削除したい
-
C言語でCSVファイルの行数を読...
-
エラーメッセージ(無効な間接...
-
自動で番号を振りたい
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
行数が30万件ほどあるCSVから、...
-
PHP5でCSVの指定行データだけを...
-
バイナリファイルの内容を、そ...
-
複数行のデータのPOST処理に関して
-
PHPで、CSVファイルを、指定し...
-
配列同士の足し算のループ処理
-
【PHP】csvファイルへの書き出...
-
stdClass Objectを連想配列のよ...
-
phpでcsvファイルから二次元配...
-
PHPでCSVの一部の行を編集したい
-
ログファイルが一定行数を超え...
-
CSVデータの行数カウントをした...
-
CSVでアップロードしたデータの...
-
CSVデータを正規表現で抜き出せ...
おすすめ情報