![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在、フォームを作成しています。
セッションを利用してフォームの次のファイルにデータを受け渡しています。
問題は、フォームのtextareaにnl2brを使用すると、出力画面のtextareaに入力された内容において改行がある部分に<br />タグが表示されてしまうことです。
フォームの流れ:
start.phpにおいてフォームに入力及び、入力エラーがある場合、入力内容訂正の表示。
mail.phpにおいて入力内容の確認及びデータ送信。
start.phpのtextarea以下:
<textarea name="test"><?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?></textarea>
解説:start.phpでは、フォームの入力項目のいずれかに入力エラーがあるとその項目の入力内容の訂正を促し、入力されたデータをもう一度表示します。(<textarea name="test">に入力されたデータをもう一度<textarea name="test">に表示します。)
mail.phpにおいてstart.phpのtextareaに入力されたデータを表示する部分は以下:
<?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?>
start.phpにおいて入力項目のいずれかにエラーがあり、<textarea name="test">に入力されたデータをもう一度<textarea name="test">に表示した場合も、また、mail.phpにおいてstart.phpのtextareaに入力されたデータを表示した場合も、<textarea name="test">内の文字列に改行があるとその部分に<br />が表示されてしまいます。
入力例:
あいうえおかきくけこ
たちつてと
表示例(nl2br使用):
あいうえおかきくけこ<br />
たちつてと
解説:nl2brを使用した場合、<br />は挿入されてしまいますが、予定の場所で改行されて表示されます。
試しにnl2br()をコードから削除すると、以下のような表示となります。
表示例(nl2br未使用):
あいうえおかきくけこたちつてと
解説:nl2brを使用しない場合、改行されません。
どのようにすれば、textareaに入力された内容の改行部分が改行だけされ<br />が表示されないようにできるでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
nl2brを使用して、<br />を \n とかに戻してやればいいと思います。
$data = nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8'));
echo ereg_replace ("<br />","\n",$data);
とかで。
この回答への補足
moon_nightさん
ご回答、ありがとうございました。
moon_nightさんに教えていただいた方法ではありませんが、解決しました。
解決方法は、
start.phpのtextarea以下:
<textarea name="test"><?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?></textarea>
を
<textarea name="test"><?php echo htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8') ?></textarea>
へ変更するだけという簡単なものでした。(nl2br()を削除するだけ。)
理由ですが、<textarea>にnl2br()を使用していると、入力項目にエラーがありデータの再出力時に<br />が<textarea>の文字の改行部分に付加されてしまいます。しかし、<textarea>の改行は本来\n(\rだったかな?)のため、<br />が表示されてしまうというものでした。
逆にmail.phpにおいてstart.phpのtextareaに入力されたデータを確認する画面では、HTMLで表示するため<br />は有効となります。そのため、確認画面(mail.php)においては以下の記述のまま(nl2br()を使用したまま)で問題ありませんでした。:
<?php echo nl2br(htmlspecialchars($input_data['test'], ENT_QUOTES, 'UTF-8')) ?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- MySQL MySQLに登録した内容を更新する時の、textareaの使い方 1 2022/07/11 18:20
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
HTMLで前の画面に戻る時、入力していた値が消えてしまいます。
PHP
-
tableタグとformタグの組み合わせ
HTML・CSS
-
別ファイルの変数を呼び出したいのですが?
PHP
-
-
4
入力テキスト内で改行コードが表示されてしまいます。
PHP
-
5
メール送信フォームとhistory.back()
PHP
-
6
PHPで、エラーがない場合のみ画面遷移させたい
PHP
-
7
MySQLにて、SQLファイルの実行の仕方。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP8を使うと、大量のWarningが...
-
「ログイン機能を持たせる」説...
-
プログラミング言語で、使える...
-
PHPで訪問回数を表示するカウン...
-
PHPの構文で間違えが分からない
-
オススメのプログラミングスク...
-
reuterの記事をbeautiful.soup....
-
アマゾンのような評価の星を選...
-
PHPのセッション有効期限について
-
PHPで画像の渡しが上手く行きま...
-
配列の値の更新方法について
-
php に関して質問です。 各ユー...
-
ワードプレスサイト PHP8.0.25...
-
php 確認表示画面で値をSESSION...
-
空文字 "" ですが 空文字の意味...
-
if (!empty($_POST) ){ // フォ...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
これの対応OSを教えて下さい。p...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのレポートの表示...
-
フォームのtextareaにnl2brを使...
-
phpの<br>\\nと\\nとエスケープ...
-
改行したいのですが
-
<br>が文字列で出力されてしま...
-
C#のRichTextBoxで表示行数を取...
-
入力テキスト内で改行コードが...
-
機種依存文字
-
PHPのfopenのバイナリモードに...
-
<TEXTAREA> 1行目の改行・・・。
-
.netのaspxでDataGridを1行2...
-
Texで[0:0]を文頭でつかいたい...
-
フォームから入力された改行コ...
-
該当セルに行替えを含むデータ...
-
PHP+DBで日記を作っています
-
ファイル名がテキストボックス...
-
改行コード入り文字列を含むXML...
-
テキストエリアで読み込んだら<...
-
alertでの改行方法は?
-
テキストエリア内の改行
おすすめ情報