• ベストアンサー

formのvalueについて

いつもお世話になっております。 今回はフォームについてお聞きしたいです。 現在フォームに値を入れてCGIで送信し、それを再度表示するものを作っているのですが、valueに入れられる値についてわからないことがあります。 一つ目はvalueの中に"(ダブルクォーテーション)があると、そこでvalueが終わりと認識されるのかそれ以降の文字が表示されなくなってしまいます。 たとえば value="abc"def" のようになっているときフォームにはabc"defと表示してほしいのですがabcまでしか表示できません。 ソースで確認すると value="abc"def"となっているのですがこれをすべて表示する方法はありますでしょうか? もう一点、valueに&を入れると以降の文字が認識されません。これは"と違ってなぜ無視されるのかよくわからず、調べても見当たらなかったのでその理由と回避方法がわかりましたらご教授願います。 以上、よろしくお願いします。

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

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

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

> value="abc"def" のようになっているときフォームにはabc"defと表示してほしいのですがabcまでしか表示できません。 "abc"def"のままだと一つ目のダブルクォテーションから始まった文字列が 二つ目のダブルクォテーションで終わりと認識されます。 なので、CGIから返す際にでも、二つ目ダブルクォテーションの前に 「\」を入れましょう。こういう作業をエスケープといいます。 > もう一点、valueに&を入れると以降の文字が認識されません。 &も上記と同じ発想です。 「&」と「特殊文字」の二つの単語でググれば出てきます。 ちなみにですが、こういう時は文章では伝わりにくい部分があるので、 ソースを抜粋して、記載されることをお勧めします。

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

再表示する時に実体参照に置き換えてやります。 "→&quot; → value="abc&quot;def" &があるとそれが実体参照の始まりだと見なされてしまうので、&も置き換えます。 &→&amp; また同様に<や>も普通、置き換えておきます。 <→&lt; >→&gt; (inputだと一応問題ないけど、textareaだと</textarea>とか入力されてるとおかしくなる)

noname#100277
noname#100277
回答No.1

CGIスクリプトの方で「実体文字」として扱えば良いのでは? そして返す結果の表示で元の記号にさせると。

関連するQ&A

  • VBAの文字列の中に”(全角のダブルコーテーション)を使う

    VBAのStringの中に”(全角のダブルコーテーション)を使おうとしているのですが、VisualBasicEditorにより自動的に ""(半角のダブルコーテーション2つ)に変換されてしまいます。 Dim str as String str = "abc”def"    ↓ str = "abc""def" 文字列中に全角のダブルコーテーションを使う方法を教えてください。よろしくお願いします。

  • EXCEL→CSV保存時のダブルクォーテーションについて

    下記のようにEXCELマクロにてEXCELファイルをCSVファイルに保存しようとしています。 NewBook.SaveAs Filename:="test.csv", FileFormat:=xlCSV, CreateBackup:=False このとき、セル値にダブルクォーテーションが含まれていると、出力CSVファイルの値がダブルクォーテーションで囲まれてしまいます。 ●ダブルクォーテーションが含まれていない場合 セル値→A列:ABC     B列:DEF CSVファイル→ABC,DEF ●ダブルクォーテーションが含まれている場合 セル値→A列:A"C     B列:DEF CSVファイル→"A"C",DEF 後者の場合もダブルクォーテーションで囲まれないようにするにはどうすればよいでしょうか。

  • HTMLについて

    HTMLについて分からない事がありますので、ご教授願います。 <INPUT TYPE=TEXT NAME=TEST VALUE="abc"def"> 上記のように、テキストボックスに「abc"edf」を初期表示させる1文を書きました。 しかし、「abc」しかテキストボックスには初期表示されません。 原因は「abc」の次にある「"」がVALUEに代入する文字列の最後とみなされている ためなのですが、文字列中の「"」を文字として認識させて「abc"def」と初期表示 させたいのですが、何か良い方法はないでしょうか? 実は、powerscriptでプログラミングをしています。 そのため、VALUEに指定する文字列は変数を指定していますので、 「VALUE=''」にしてもその変数に「'」が入力されていたら同じ現象が生じてしまいます。 なんとか、「"」を文字として認識させる方法はないのでしょうか?

  • CSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。

    CSVファイルの任意の列をダブルクォーテーションで囲みたいのですが・・・。 例えば  abc,def,ghi,jkl  mno,pqr,stu,vwx     ↓  abc,"def",ghi,"jkl"  mno,"pqr",stu,"vwx" というように、2番目と4番目の列の文字列をダブルクォーテーションで囲む、といった具合にです。 調べてみるとVBAを使用する方法はあるようですが、EXCELやその他のフリーソフト等を使用して処理する方法はありませんでしょうか。 よろしくお願いいたします。

  • GET形式で&を渡す

    初めまして。kuro917と申します。 cgiで、GET形式で&を渡したいのですが、うまくできません。 たとえば、 <form method="POST" action="test.cgi"> <input type="hidden" name="abc" value="def&ghi&jkl"> <input type="submit" value="送信"> だと、正常に値が渡されますが、 test.cgi?abc=def&ghi&jkl だと、うまく渡されません。 これは、区切り記号が&だからだと思いますが、どうしたらよいでしょうか>< ちなみに、値の&を%26に置き換えては見ましたが、結果は変わりませんでした。 どうしても、GET形式で&を渡したいのですが・・・。 できればcgiプログラムを変えない方法でお願いします。m(_ _)m

    • ベストアンサー
    • CGI
  • jspでformのvalueを取得。

    現在、jspとjavascriptを組み合わせたプログラムを組んでいます。 jsp内のフォームから入力した文字列をjavascriptから参照して変換、 変換後の文字列をjspで再取得、 再取得した文字列をjsp内で操作(DBへの登録とprintでの画面への表示) という流れの操作をしたいと考えています。 javascriptでjspのフォームの内容を参照して操作する方法は グーグルで調べて分かったのですが、 (document.getElementById('id').value) jspで、jspのフォームの外からフォーム内の内容を参照する方法が分かりません。 尚、フォームのあるjspと変換後の文字列を受け取るjspは同じプログラムになりますので、 formによる別プログラムへの送信は使えません。 よろしくお願いします。

  • CGIのFormのValueが取得できない。

    掲示板のCGIを改造して、定期的に収集した発言リストの一部をを昇順に並び替えたファイルを作りダウンロードしたいと計画しています。 並び替えるファイルの始点の発言番号を決める入力フォームを作りましたが、下記#の記述を活かして、取り出すことが出来ません。(当該valueを認識してないようです?) その上、未だ独立に並び替えて動作させている下記のサブルーチン&revsが認識されなくなります。 もとのCGIは、kentさんのweb-forumを他の人が改造を加えたツリー形式のものです。 いろいろ書いて有るものを調べたのですが、分りません。 どうかよろしくお願いします。 # メッセージ投稿フォ-ムを表示 &msg_form; # フォームを表示する #print "<div align='center' style='font-size:9pt'>\n"; print "<form name='form1' method='POST' >"; print "LogList開始No:<input type='text' name='sno' value='999' size=6>\n"; print "</form>"; print "</div>\n"; #print "<Script language='JavaScript'>"; #print "valueOf(document.form1.sno)"; #print "</Script>\n" # 昇順リスト表示 &revs;

    • ベストアンサー
    • CGI
  • XPathの関数「text()="value"」のダブルコーテーションをエスケープする方法は?

    お世話になります。 現在、XPathに関するプログラムを制作しています。 入力されたXPathを解析し、解析した内容に応じて特定の処理をさせるというものなのですが、text() 関数の解析で躓いています。 text()="value" ここまではわかります。 text()='value1"value2\value3' 上のケースでは、どのように記述すればいいのでしょうか? シングルコーテーションで括るという解では、シングルコーテーションとダブルコーテーションが混在している場合に対応できません。 そのプログラムではクオート文字をダブルコーテーションに限定しているので、ダブルコーテーションのエスケープ方法を探しています。 現在はバックスラッシュ(\)によるエスケープ処理で対応しています。 text()="value1\"value2\\value3" しかし、Firefox拡張「XPath Checker」で調べるとバックスラッシュによるエスケープ処理は働いていないため、 この方法は正しくない気がしています。 プログラムとしては問題なく動作していますが、XPath記法に沿っていないのは落ち着きません。 何かヒントとなる情報はないでしょうか?

    • ベストアンサー
    • XML
  • CSVでの頭に”0”の入る数字の項目の表示方法について

    CSV形式で、頭に”0”の入る数字項目を正しく表示させるには どうすればよいでしょうか? 例えば、社員コード「00123」という値を.CSVファイルに入れ、 エクセルで開くと「123」となってしまいます。 過去のNo3426を見たら回避方法は載っていたのですが、 開く際になにかをするのではなく、CSVファイルを作成する時点で、 どうにかしたいのですが...。 ダブルコーテーションでくくってもだめでしたし、 シングルコーテーションを頭につけた場合では0は消えなかったのですが、 その代わり初期表示でシングルコーテーションまで表示されてしまいます。 どうにかEXCELでは開くだけで文字列扱いできる方法はないのでしょうか?

  • 「"」(ダブルクォーテーション)で囲まれた「,」をキャンセルしてcsvの値を抽出するには

    111,"あいうえお",,"さしす,せそ" のテキストファイルを value[0] = 111 value[1] = あいうえお value[2] = value[3] = さしす,せそ いう形に配列に入れたいと思っています。見てもらえばわかると思いますが、数字には「"」(ダブルクォーテーション)が付かなくて、「"」の中に入っている「,」(カンマ)は区切り記号とはみなされず値として取り込んでいます。 splitの正規表現など使えないか苦悩しています。いまだ解決方法見つけられず。 テキストファイルの「"」(ダブルクォーテーション)有り/無しや順番などは都度変更されます。 カンマ区切りで、「"」(ダブルクォーテーション)で囲まれた部分は外して値を取り出すにはどうしたらいいのでしょう? ご存知の方、ご教授ください。

    • ベストアンサー
    • PHP

専門家に質問してみよう