改行コードの扱いに関する質問

このQ&Aのポイント
  • 質問No.7994841では改行コードの扱いについて質問しました。管理サイトから登録したデータがネットショップの表示上で改行されず、問題を解決する方法を教えていただきました。
  • 新たな質問として、(1)テンプレートのhtmlを読み込む方法と直接html文書を表示する方法とで改行コードの扱いが異なる場合の対応方法、(2)データ編集ページから確認ページに転移した際に改行コードが消えてしまう問題の解決方法について教えていただきたいです。
回答を見る
  • ベストアンサー

せっかく入れた改行コードが消えてしまう

質問:No.7994841は一旦、ベストアンサーにした方から頂いた回答のやり方で解決できたので質問を閉じて、改めてその質問に関係する新たな質問を立たせて頂きました。 改めて状況を書かせて頂きますと、 ショッピングサイトを運営・管理しています。 CGIを使ったネットショップ、及び管理サイトがあるのですが、管理サイトからデータを登録すると一旦phpMyadminのデータベース上にデータが登録されて、ネットショップのページにてその登録したデータが表示される仕組みになっています。 そして、前の質問では、 「そのネットショップで見れる所では改行等入れながら成形されたデータを表示したいのですが、管理サイトから改行を<br>で登録するとデータベースでは、&lt;br&gt;と登録されて、実際のネットショップでは<br>と改行コードそのまま表示されて改行されていません。 データベースを直接いじってデータ内に<br>と入れるとネットショップでも正しく改行がされているのですが、管理サイトを色んな人に使ってもらうことを考えるとデータベースを直接いじりたくないのです。」 という質問をさせて頂き、解決方法を頂いたので解決できました。 そして、改めて質問スレッドを立たせて頂いた新たな質問が2つあります。 (1)上記において頂いた回答は$line =~s /&lt;br&gt;/<br>/g;とprintを使う方法で、そのとき困っていたページではその書き方でテンプレートのhtmlを読み込んで行うやり方だったので解決できました。 もう一つcgiのソースファイル内で直接html文書を書いて表示させるページもあってそちらの場合だと$lineやprintを使わずに表示しているのですがこういったページの表示方法の場合はどのようにしたら上手く行くでしょうか? (2)前回の質問とはこちらも別のページのことなんですが、こちらの場合は一旦データ編集を行い「確認」ボタンがあって押すと入力したデータ一覧を確認できるページに転移してそのページにある「登録」ボタンを押すことでデータがデータベースに登録されます。 その、編集ページから確認ページに転移した際に改行コード<br>や改行【Enter】が消えてしまって確認ページには改行コード等がなくなってしまっています。 前回の質問のページとの違いですが、 前のページはhtml内でformがあり、そこにaction(自分のcgiにして再読み込み)もmethodも記載されて確認ページの処理が動くモード設定も同じform内で行っていました。 なので、確認ボタンが押されると同じcgiが再度呼ばれて確認ページの処理が行われます。 今回のは、form内にはactionもmethodもなく確認ボタンを押したタイミングでjavascriptが呼ばれてそのjavacriptで引き数を元にactionとmethodを設定して自分のcgiに対してsubmitしていました。 出来ればあまり大きな修正を加えずに対応したいのですが良い解決方法がありましたら教えて頂けますようよろしくお願いします。

  • CGI
  • 回答数1
  • ありがとう数1

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

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

要するに、そのネットショップ管理のCGIは、改行やHTMLタグ(<br>等)を 入力できないようになっている仕様なんです。 ("<"や">"はタグの開始/終了ではなく、単なる文字記号と認識する仕様) 解決するには、そのCGIを改造するしかないと思いますが、 ここで質問しても、あなたがどんなCGIを使っているか わからないので、適切なアドバイスができるわけありません。 前回の質問は、あてずっぽうのアドバイスが運よく当たったようですが、 今回の質問のように処理方法が異なるところには適用できません。 また、元の処理構造をよく理解しないまま改造すると副作用が出るかも しれません。 前回の質問の解決方法の場合、変換した$lineを表示だけに使ってるなら 大丈夫だと思いますが、他の処理にも使ってたり、表示結果をどこかで 再利用されてたりするならそこに悪影響を及ぼさないか確認する必要あります。 あなたが今使っているネットショップ用CGIが一般に公開されている ものなら、その名前を開示すれば、そのCGIのことを知っている人が 適切なアドバイスをくれるかもしれません。 あなたのショップ用に誰かが作ってくれたものなら、その作成者に 相談するべきです。

phpjava
質問者

お礼

ご回答ありがとうございました。 一旦、この問題は保留としました。

関連するQ&A

  • 改行コードがそのまま表示されてしまう。

    ショッピングサイトを運営・管理しています。 CGIを使ってネットショップ、及び管理サイトがあるのですが、管理サイトからデータを登録すると一旦phpMyadminのデータベース上にデータが登録されて、ネットショップのページにてその登録したデータが表示される仕組みになっています。 そのネットショップで見れる所では改行等入れながら成形されたデータを表示したいのですが、管理サイトから改行を<br>で登録するとデータベースでは、&lt;br&gt;と登録されて、実際のネットショップでは<br>と改行コードそのまま表示されて改行されていません。 データベースを直接いじってデータ内に<br>と入れるとネットショップでも正しく改行がされているのですが、管理サイトを色んな人に使ってもらうことを考えるとデータベースを直接いじりたくないのです。 上手く文字列の置き換え関数等を使ったらできるものなのでしょうか? なにかいい方法がありましたら、ご教授よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIで改行タグを改行コードに変換ってできますか?

    CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?

    • ベストアンサー
    • CGI
  • jsp 改行コードで改行させて表示したい

    はじめまして。 PostgreSQLから読み込んだ文字列データを表示させるtomcat+struts+servlet/jspを作成中です。 データの文字列に含まれる改行が、クライアントに表示された際に反映されず困っています。 過去ログも調べ、近い質問はありましたが、僕とは内容が微妙に違うようで、改めて質問させていただきました。 例えば、あるテーブルのある項目に、 A B C というデータ(A,Bそれぞれの後に改行のある3行の文字列)があるとします。 これを読み込みaction form bean(と言うのですか?setter/getterを定義する関数です)を介してjspに埋め込むと、できあがるhtmlでは、 ABC と改行されずに表示されます。 htmlで改行させるには「<BR>」が必要なのかと、データ文字列に0x0dや0x0a、または0x0d+0x0aがあれば「<BR>」に置き換えてaction form bean(?)のsetterに渡してjspを作ると、今度は、 A<BR>B<BR>C と「<BR>」が文字列として表示されます。 htmlをソース表示すると、「A&lt;BR&gt;B&lt;BR&gt;C」で、親切にも「<」「>」をそれぞれ「&lt;」「&gt;」に勝手に置き換えあくまで文字列として表示してくれるようです。 試しに改行コードを「&lt;BR&gt;」に置き換えても予想通りその部分は &lt;BR&gt; とそのまま表示され、そのソースは「&amp;lt;BR&amp;gt;」でした。 「<」や「&lt;」等をそれぞれ「&lt;」「&amp;lt;」のように置き換える作業は、どこが行っているのでしょうか。 また、改行位置で改行させるにはどうすればよろしいでしょう。 OSはwindowsXPです。 無知ゆえに、つまらないことで悪戦苦闘しているのかも知れませんが、経験も浅くてよく解りません。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • 改行の削除

    現在入力したデータをデータベースに保存し、 そのデータをPHPで表示するようにしています。 入力する場所はテキストエリアで改行などを入れてるのですが、データベースでテキストエリアに表示するときに 下記のように<br />が入ってしまいます。 あ<br /> か<br /> さ そこで、下記のような処理を行ったのですが、やはり上記のような表示になってしまいます。 何かよい方法はありませんでしょうか? $tmpStr = str_replace("<br />", "", trim($tgtStr));

    • ベストアンサー
    • PHP
  • フィールド内に改行は入れられますか

    データベースのフィールドに改行付きのデータを登録することは出来ますか? HTMLのTABLEの中にデータベースの内容を表示するようにしたいのですが、データベースの内容を改行付きで取得したいんです。そしてその改行が有効になるようにHTMLで表示したいのですが。そういうことはできますか? 出来るか出来ないかは使用するデータベースによって変わってきますか? 使用データベースはACCESSかオラクルかまだ決まっていません。

  • Perlでの改行コードについて

    <textarea>に入力された値をPOSTで渡し、ポスグレに書き込み、それをHTML上で表示する処理をしているのですが。 textareaで改行を入力した場合に、 DB内に改行が登録されません。 例: *textareaのwrapはsoftに設定してあります。 あいうえおかきくけこ さしすせそ と入力すると。 DBには 「あいうえおかきくけこ さしすせそ」 と登録され 表示では「あいうえおかきくけこさしすせそ」と表示されます。 ソースでみると 「あいうえおかきくけこ さしすせそ」と表示されています。 改行コードの置換がされていないのだと思い INSERT前に s/\r\n/<BR>/g; s/\r/<BR>/g; s/\n/<BR>/g; を使い置換をすると DBには何も登録されません。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 改行コードについて

    ファイルの文字コードはutf-8で改行コードはLFです。 メール送信時にメール文面の一部にいれるテキストを mysqlに保存しています。 メール送信のソース内でデータを読み込み送信までは できているのですが改行コードを変換したく $msg = str_replace("\r\n", "\n", $msg); とやってみましたが改行されず普通に\r\nと表示され うまく変換ができません。 いろいろと試した結果以下のソースでは正常に改行されました。 $msg = str_replace("\\r\\n", "\n", $msg); メール送信前にデバッグでしてみましたが読み込むデータの 改行部分は\r\nとなっているのは確認済みです。 \を多くつければ改行はできるようなのですがこれは仕様なの でしょうか? またmysqlに入れてあるデータはフォームから入力し登録 しているのですがLFの改行コードは\nなので登録時に\r\nではなく \nと変換してからmysqlに登録するのがいいものなのでしょうか?

    • 締切済み
    • PHP
  • 改行コードを保存できない。

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

  • cgiをC言語を使っての改行の仕方を教えて下さい

    今、ホームページの作成をしています。 その際“応募ページ”で送信ボタンを押すと、cgiを使って入力確認の画面を 表示するようにしたいのですが、入力画面のTHML言語でTEXTAREAを使うと その後の入力確認画面で入力通の改行ができません。 入力確認画面のソースを表示すると、入力画面で指定した箇所で改行はされているようなのですが、各行の最後にHTMLLの改行タグ<BR>が表示されていません。 改行タグを各行ごとに入れられれば良いのですが、どうしてもやり方が わからないので、良いやり方があれば教えていただけませんか。 cgi上ではC言語を使い、ホームページを表示しています。 よろしくお願いします。

  • 表(<table>)の直前が、改行されてしまう。

    表(<table>)の直前が、改行されてしまう。 perlでコーディングしています。データベースはmdbファイルです。 <textarea>内を簡単なWebエディタに見立てて、 <textarea>内へhtmlタグなどで書き込んだデータを、 mdbのメモ型フィールに更新し、これをブラウザで表示させています。 このとき、表(<table>)を表示させるために、<textarea>内に<table><tr><td>タグを入力するのですが、mdbファイルに更新する際に、 <table> <tr> <td>   : のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラウザに表示された表の直前が改行されてしまいます。 (mdbファイルに直接書き込んでも同現象となりました。) <table<tr><td>・・・ と改行せずに書き込むと、ブラウザに表示された表の直前は改行されませんでした。 なお、ブラウザに表示させる側のcgiファイルには、改行キー(¥nなど)を改行タグ(<br>)に変換させるために、   $textarea1 =~ s/\r\r/<br>/g;   $textarea1 =~ s/\r/<br>/g;   $textarea1 =~ s/\n/<br>/g; としているため、これと関係していると思われるのですが、 わたくしとしては、  ●<textarea>内で手入力した改行は、ブラウザ表示に反映させるが、  ●<tabel>・・・・</tabel>の部分は、改行して入力されていても、この改行だけは無視する、 と言った、都合のよいことをしたいのですが・・・、行き詰っております。 perlやcgiの問題ではないかも知れませんが、 どなたか、よいアドバイス、ご提案などございませんでしょうか。 ご教授いただければ、大変助かります。 よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう