• ベストアンサー

POSTによる改行を含む文字列の受け渡し

test1.php内のformのテキストエリア(textarea)のデータをPOSTによってtest2.phpへ送りたいのですが、改行がうまく転送できないか、あるいはうまく表示できていないため、外観上改行されているように見えません。 たとえば、test1.phpのテキストエリアで 「 あいうえお かきくけこ 」 と入力して、それをtest2.phpに送って表示させると、 「 あいうえお かきくけこ 」 と表示されます。 どうすれば改行しているように見せることができるのでしょうか?

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

HTML的な問題で、<br>タグを入れる必要があるのではないでしょうか? echo nl2br($_POST['text']); nl2brという関数を使うと、改行コードが<br>タグに変換されるので、まずはこれを試してみてください。

tenketu
質問者

お礼

ありがとうございます。 その関数でうまくいきました!

その他の回答 (1)

  • ma2shin
  • ベストアンサー率41% (69/167)
回答No.2

echo nl2br($_POST['text']); とすれば、確認画面で改行(¥n)している部分が<br>となりブラウザー上で改行されて表示されます。

tenketu
質問者

お礼

ありがとうございます。おかげさまでうまくいきました。 みんさん協力ありがとうございました。

関連するQ&A

  • 改行データPOSTできない

    mysql+php+htmlで作ってるんですが、POST後のページで改行が反映されません。 -------------------------------- 111.php -------------------------------- - 省略 - <body> <form action="222.php" method="post"> <input type="hidden" name="data2" value=<?php echo "$data1";?>> <input type="submit" value="編集"> </body> - 省略 - -------------------------------- 222.php -------------------------------- --省略-- <?php $data2 = $_POST['data2']; ?> <form> <textarea cols="80" rows="20" name="test"><? echo "$data2"; ?></textarea> </form> --省略-- -------------------------------- これだと222.phpで1行だけしか表示されません。変数に入れれないのでしょうか? お手数ですが、ご教示お願いします。 ちなみに111.phpの方も textarea にすると正常に値が渡せます。 でも表示したくないのでイヤです。 (急いで入力したので、タイプミス&コピペミスっぽいのは無視してくださいm(_ _)m)

    • ベストアンサー
    • PHP
  • PHPを使って文字列から改行コードを取り除く方法

    PHP初心者ですが、宜しくお願いします。(簡単なことなのかもしれませんが、なかなかうまくいかないので質問させていただきました。) 環境PHP5.2.4 MYSQL14.12DISTRIB5.0.4 WINXP IE6.0 状況 HTMLフォームを作成し、テキストエリアからPOST送信し、 PHPを使って、MYSQLのtest_tテーブルにデーターをいれました。 入力データーに改行があるとき例えば 1エンター2エンター3エンター とした場合、下のように3行になります。 mysql> select * from test_t; +-----------+ | tekisuto | +-----------+ | 1 2 3 | +-----------+ 1 rows in set (0.00 sec) ★質問 改行コードをPHPで処理して、MYSQLに一行 123と連続で入力(空白とかいらない)ようにしたいのですが、どうしたらいいのでしょうか? HTMLからのデータの取得は以下のようにしています。 $tekisuto=$_POST["tekisuto"];

    • ベストアンサー
    • PHP
  • 改行されても空白がずれてしまいます

    カテゴリがMYSQLかもしれません。その場合はご指摘お願いします。 phpとmysqlと使って掲示板のような機能を作っています。 TEXTAREAフォームに改行して文字列を入力し、DBにINSERTで追加します。 表示させるときにSELECTして、nl2br( )を使っています。 表示の際、改行は実行されるのですが  空白(スペース)がTEXTAREAフォーム入力したときと違うように表示されます。 たとえばTEXTAREAフォームでは 本日  10:00~14:00      17:00~23:00 と入力したのにecho で表示させると 本日  10:00~14:00 17:00~23:00 というように改行した行の空白がずれてしまいます。 DBにINSERTするとき、DBから取り出すとき、取り出して表示させたとき、 どの段階でずれるという問題が起きているのでしょうか。 また、どういった対処をすればよろしいでしょうか。 どうかご教授お願いします。 以下がソースコードの一部です。 //入力して追加する部分 <FORM method="POST" action="test1.php"> <TEXTAREA NAME="test1" COLS="60" ROWS="7"></TEXTAREA> <INPUT type="submit" name="submit" value="追加"> で入力し送信して,POSTメソッドで受け取り $add_text = $_POST["test1"]; mysql_query("insert into `test`(`text`) VALUES('$add_text')"); 「test」というテーブルに追加しています。 //表示する部分 $result = mysql_query("select * from test"); $rows = mysql_num_rows($result); if($rows == 0){ } else{ while($row=mysql_fetch_array($result)){ echo nl2br($row['text']); }

    • ベストアンサー
    • PHP
  • 改行コードが入ったデータの受け渡し

    教えて下さい。 現在、問い合わせページのような画面を作成し、その中で "TEXTAREA"に入力されたものを最終的にはデータベースの中 へ格納しようとしています。 画面の遷移としては、a.php(入力)⇒b.php(確認)⇒c.php(更新) というように3画面の構成で考えています。 その際に、最初の入力画面では"TEXTAREA"を使用している為、改行 等のデータも含まれてしまいます。 2画面目にはそのままPOSTで値を後れましたが、3画面目へは <INPUT type='hidden' ~ で飛ばしています。 しかし、その際に、当初画面上から入力された改行コードでデータが 切れてしまい、最後の更新画面では切れたデータしか取得できません。 改行コードを変換する為に、str_replace 等を使用してみましたが、 それでも上手くいきません。 このような改行を含むようなデータの受け渡しはどのようにするのが 良いのでしょうか。。。 教えて下さい。

    • ベストアンサー
    • PHP
  • 文字列を一定文字数で挿入もしくは、改行。

    文字列を一定文字数で挿入もしくは、改行する方法、 関数はあるでしょうか? たとえば、 あめんぼ、赤いなあいうえお を8文字ずつで改行したいのですが、 方法が分かりません。 あめんぼ、赤いな あいうえお 最初は、mb_substrで改行する文字を調べて 改行タグを入れれば、とたかをくくっていた んですが、同じ文字を入力されていたら、変な 所で改行されてしまうと、気がつきました。^^; 「あ=><br>あ」にすると、一文字目の”あ”も 指定されてしまって。 改行するデータは、常に変わり予想はできません。 FORMからの入力を想定しているので、最悪 <textarea wrap="hard">で送信時に強制改行しても いいかなーとは、思っていますが、PHPで処理できるで しょうか?

    • ベストアンサー
    • PHP
  • フォームのtextareaにnl2brを使用すると、入力内容の改行部分に<br />が表示されてしまう。

    現在、フォームを作成しています。 セッションを利用してフォームの次のファイルにデータを受け渡しています。 問題は、フォームの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 />が表示されないようにできるでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • $_POSTで\マークが勝手についてしまいますが、これは仕様でしょうか?

    こんにちは。 以下のようにコーディングしました。 <body> <? print $_POST['test']; ?> <form action="test.php" method="post"> <textarea name="test">表示</textarea> <input type="submit" /> </form> </body> そうすると「表\示」と、「\」マークが表示されてしまいます。 これはPHPの仕様なのでしょうか? 必ず「stripslashes」で処理しなければいけないのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • [PHP]formのtextareaの改行を消せない

    [PHP]formのtextareaの改行を消せない formのtextareaに改行して数行のデータを入れ、それを改行毎にexplodeで分けて居るのですが、1個1個のデータから改行の情報が消えません。 textareaに 1234 2345 3456 $data=explode("\n",$_POST[textarea]) で、dataに配列として入れて、 echo $data[0] . "," . $data[1] . "," . $data[2]; と表示させてみると、 1234 ,2345 ,3456 と4ケタの数字のあとに半角スペースが入ります。 HTMLソースで見ると改行されているようです。 str_replace("\n","",$data[0]) とやっても、消えません。 この改行(半角スペース)があるため、 if (mb_strlen($data[0])==4) で、Trueにならなくて困っています。 if (mb_strlen($data[0])==4 or mb_strlen($data[0])==5) とすることで解決は出来るのですが、そのほかでも使用したいので、出来れば最初からこの改行(半角スペース)を消したいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テキストの受け渡しの不具合

    1.html → 2.cgi へフォームを使ってデータの受け渡し。 例) 1.htmlのテキストエリアに あ い う え お と入力をし、2.cgiを実行すると、 あ い う え お ときちんと表示されます。 ($FORM{'hoge'}と指定。) この2.cgiから1.htmlで入力されたデータに修正を加える場合に「入力しなおす」というボタンを加えました。 (3.cgi) そのために、2.cgiのデータを3.cgiに渡す必要があるため、 $FORM{'hoge'}    ↓ $FORM{'hoge'}<INPUT TYPE=HIDDEN NAME=hoge VALUE=$FORM{'hoge'}></INPUT> と変更しました。 すると、2.cgiで表示されるデータが、 あ い う え おい う え お> となってしまうのです。 他の項目は平気なのですが、改行がされる箇所(TEXTAREA)にこの現象が起こっています。 回避策を教えてください。

    • ベストアンサー
    • CGI
  • javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。

    javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。 別窓ページにてtest.cgiを呼び出し、そのCGIに値を渡したいのですが、 一応値はテキスト形式で渡せるのですが、テキストエリアで入力したものの 改行コードが消えてしまいます。何か良い方法があれば、教えて下さい。 <FORM name="test" ACTION="javascript:test_window_open('/cgi-bin/test.cgi?bikou='+document.test.bikou.value);"> : : <TEXTAREA rows="8" cols="50" name="bikou"></TEXTAREA>

専門家に質問してみよう