※ ChatGPTを利用し、要約された質問です(原文:テキストエリアの改行について)
PHP初心者のための改行問題対処法
このQ&Aのポイント
PHPで掲示板を作成している際、テキストエリアの改行が反映されない問題についての解決方法を教えてください。
テキストエリアで複数行の文字を入力しても、1行で表示されてしまう問題が発生しています。改行が反映されるようにする方法を教えてください。
質問者はPHP初心者で、掲示板を作成中です。テキストエリアで複数行の入力を行っても、1行で表示されてしまう問題に悩んでいます。改行が反映される方法を教えてください。
PHP初心者です。
今、PHPで掲示板を作成しています。
下記のように
テキストエリアで複数行文字を打っても、
1行で表示されてしまいます。
-----入力-----
<textarea>
Test
Test
</textarea>
-----出力-----
Test Test
--------------
どうしたら、改行が反映されるのでしょうか?
プログラム貼り付けておきますね!
--------------------------------
<form method="post" action="<? echo $PHP_SELF; ?>">
名前<br><input name="name" type="text" size="10"><br>
コメント<br><textarea name="mes" rows="10" cols="50"></textarea><br>
<input type="submit" value="送信"><input name="del" type="submit" value="RESET"><br>
<?php
extract($_POST);
/* 設定 */
$ip = getenv("REMOTE_ADDR"); //IPアドレスを取得
$logfile = "bbs.log"; //ログファイル名
$viewmax = 10; //表示行数
$logmax = 10; //保存最大行数
$n_fp = fopen("num.log","r+");
$num = fgets($n_fp, 32); //現在のNo.を取得
/* リセット処理 */
if($del){
$bbs = fopen("bbs.log","w"); //BBSログを消去
fclose($bbs);
fclose($n_fp); //ファイルを閉じる
$nc_fp = fopen("num.log","w"); //num初期化
$num = 1;
fputs($nc_fp, $num); //書き込み
fclose($nc_fp); //ファイルを閉じる
}
/* 書き込み処理 */
if($name && $mes){
/* HTMLタグをエントリに変換 */
$mes = htmlspecialchars ($mes);
$name = htmlspecialchars ($name);
/* Shift-JISの場合バッククォートを除去 */
if(get_magic_quotes_gpc()){
$mes = stripslashes($mes);
$name = stripslashes($name);
}
/* \nを<br>に変換する */
if($mes == "\n"){
$mes = str_replace("\n", "<br>", $mes);
}
/* 日付けのフォーマット */
$now = gmdate("d(D) H:i ",time()+60*60*9);
/* ログのフォーマット */
$dat = "$name<br>└ $mes <font size=\"1\">[$now]</font><br>($ip)<br>\n";
/* ログに書き込む */
$lines = file($logfile); //いままでのログを配列に読み込む
$fp = fopen($logfile, "w"); //ログをオープン(空になる)
fputs($fp,"[$num] $dat"); //データを書き込む(先頭に)
for($i = 0; $i < $logmax-1; $i++) //いままでの分を追記
fputs($fp, "$lines[$i]"); //(配列0-98→現ログ1-99行目)
fclose ($fp);
$num++;
fseek($n_fp, 0); // ポインタを先頭に戻す
fputs($n_fp, $num); // 書き込み
fclose($n_fp); // ファイルを閉じる
}
/* 表示処理 */
$lines = file($logfile);
for($i = 0; $i < $viewmax; $i++)
echo $lines[$i];
?>
</form>
お礼
>>ここはどうでしょうか。 >>if($mes == "\n"){は、「もし$mesが、改行(\n)と同じなら」のような気がします。 >>if(ereg("\n", $mes){・・・とか。 ここの部分を直してみたところ、無事に改行されました!!! 本当にありがとうございますm(_ _)m 感謝感謝です♪