改行コードが入ったデータの受け渡し

このQ&Aのポイント
  • 改行コードを含むデータを受け渡す方法について教えてください。
  • 現在、問い合わせページで改行を含むデータを入力していますが、それをデータベースに格納する際に問題が発生しています。
  • 改行コードを変換してデータを正しく受け渡す方法を教えてください。
回答を見る
  • ベストアンサー

改行コードが入ったデータの受け渡し

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

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

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

  • ベストアンサー
  • vaio09
  • ベストアンサー率37% (756/2018)
回答No.1

「PHP 改行 エスケープ」で検索されると良いです。

その他の回答 (2)

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.3

受け取ったら if(substr_count($text,"\r\n") != 0){ $text_br = str_replace("\r\n","<br>",$text); } 一旦このようにしてから遷移しておいて DBへUPDATEやINSERTをするときは逆の置き換えをしてあげたら いかがでしょうか。 nl2brという関数もあるのでそちらのほうが簡単かもしれないですね^^; hiddenで渡すときにnl2br($text)のようにしてあげればいいだけかも しれないです。

参考URL:
http://php.s3.to/man/function.nl2br.html
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

セッションでやるかhiddenを使わずにtextareaの readonlyでやってください 隠したいのであれば<div style="display:none">テキストエリア</div> で消してください

関連するQ&A

  • 改行コードについて

    HTMLフォームのテキストエリアで改行した場合の処理についてご質問します。 Windowsのローカル環境で試しています。 改行コードLFでPHPを作成しています。 ○改行コードの認識 LF(\n) Unix,Mac OS X CR(\r) Mac OS 9 CRLF(\r\n) ○テキストエリアからの入力値の処理 CRLF、CRをLFに変換しています。 $value= str_replace ("\r\n", "\n", $value); $value = str_replace ("\r", "\n", $value); このあとDBに値を格納しています。 ○出力の際の処理 DBから値を取得。 phpのprint関数で下記を出力。 <textarea >${value}</textarea> 上記処理で、ローカル、サーバともに正常に動作しています。 しかし改行コードがLF(\n)なのでCRLF(\r\n)のWindowsで表示したときには問題が起きそうな気がします(実際には正常に動作)。 なにかしっくりこなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 改行コードを保存できない。

    <textarea wrap="hard" name="sentence" rows="3" cols="30"></textarea> このフォームで、入力したデータは、 PostgreSQLのテーブルに保存されるように構成しました。 フィールドは、"text"型です。 いざそれを、phpでHTMLに呼び出すと、改行文字は無視されます。 実際に、データベースを開くと、その値はこのようになっていました。 "ああああ・・あああ・・・・ああ" 改行コードはどうやら、"・"2個を改行1つと扱って保存しているようでした。 phpで、・・を含む値をHTML呼び出す時、 ・・を<BR>として呼び出して、改行してしまう技はないでしょうか?

  • 改行コード?

    <TEXTAREA name="moji" cols="80" rows="6"></TEXTAREA> で文字を入力したときmojiにはいっている改行コードは なにですか?

  • textareaタグに入力された改行コードの扱い

    PHPとMySQLを利用して簡単なWEBアプリを作っています。 <textarea>内に入力された文字列をMySQLにINSERTする際、使用しているブラウザによって改行コードの文字数が異なるため、MySQLにINSERTされる文字数が異なってしまいます。具体的にいうと、 --MySQL仕様-- <textarea>内のデータを、MySQLのとあるtableにINSERTする。 そのtableの<textarea>のデータを登録するcolumnにvarchar(1000)を指定している。 --PHP仕様-- <textarea>内のデータをPOSTより受け取り、其の生データを上記設定したcolumnにINSERTする。 (文字数チェックの際、\r\nを\nに変換し、改行コードを1文字として解釈させ、カウントしている。) そのデータを訪問者が閲覧できるようにpreg_replaceで改行コードを<br />に変換し表示している。 INSERTされたデータは再編集できるよう、編集ページを設けている。 ◆問題 ブラウザごとで<textarea>内の改行コードが異なるため、文字数カウントの際、\n、\r、\r\nによって文字数にズレが生じてしまい、その結果varchar(1000)で設定したcolumnでは使用したブラウザによってINSERT可能な文字数が異なってしまう。 ◆質問 ブラウザによって出力される改行コードが異なるため、MySQLのtableにINSERTされる文字数が異なってしまいます。改行コードを1文字と解釈し、ブラウザによる差異をなくす良い方法はありませんか? --自身で考えた方法-- ・varchar(1000)を例えばvarchar(1200)などとし、PHP側のみで文字数の制限を掛ける。 ・一部のサイトでは\r\nを\nに変換し、INSERTするって方法が記載ありました。この方法を選択すると、再編集のページでブラウザを判別し、\nを\r\nに変換する手間があるので仕様変更に手間がかかりそう。 以上となります。独学の自分には「自身で考えた方法」しか思い浮かばず、MySQLに登録する際、ブラウザによる改行コードの文字数の差異の良い方法が浮かびませんでした。何か良い方法をご教授いただけませんでしょうか?宜しくお願いします。

    • ベストアンサー
    • MySQL
  • POSTによる改行を含む文字列の受け渡し

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

    • ベストアンサー
    • PHP
  • 改行コードが半角スペースになってしまいます

    もしかしたらカテゴリはphpかも知れません。 よろしくお願いします。 phpとMySQLでWEBアプリを作っています。html上のtextareaフォームに入力した文字列を、phpを使ってMySQLにINSERTします。この文字列には改行(CRLF)も含まれます。 それをSELECTで参照し表示させると、改行が半角スペースに変換されてしまいます。 phpMyAdminで見てみるとちゃんと改行が入っています。 つまり、格納の段階ではちゃんと改行コードが入っているんですが、取り出すときに変換されてしまうようです。 この場合、どのように対処すればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • INPUTタグによるデータ引継ぎについて

    入力フォームから確認画面を経由してメール送信する プログラムを作っているのですがINPUT<type="hidden"に よるデータの受け渡しがうまくいかず困っています。 ~ソース~ <FORM ACTION="send.php4" METHOD="post"> <INPUT TYPE="hidden" NAME="naiyo" VALUE=$temp> </FORM> $tempには改行コードを含む文字列が入っているのですが send.php4の方で変数naiyoを見ると、改行コードの ところでデータが切れてしまっているのです。 INPUTタグの前でstr_replaceを使って改行コードを 変換しても変わりません。 ありふれたプログラムなんですがはまってます・・。 どなたかお知恵をお貸しください・・。

    • ベストアンサー
    • PHP
  • Accessデータの改行コードを取るには

    質問させていただきます。 Access2000を利用しております。取引先データの住所項目の任意の位置に改行コードがあります。この改行コードを取りたいのですが、更新クエリー等で可能でしょうか?改行コードを取るにはどのようにすれば良いでしょうか?よろしくお願いいたします。

  • 改行データ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で掲示板を作成しております。 返信画面でデータベースに保存している過去データを 返信用のテキストボックスで表示しているのですが、 例) ・コード <TEXTAREA NAME=body COLS=50 ROWS=8 wrap="soft"><? print $body ?></TEXTAREA> ・ブラウザ上 掲示板です<BR>テスト という風に表示されてしまいます。 改行が実行されないのはなぜでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう