プロが教えるわが家の防犯対策術!

いつもお世話になっております。
今回はフォームについてお聞きしたいです。

現在フォームに値を入れてCGIで送信し、それを再度表示するものを作っているのですが、valueに入れられる値についてわからないことがあります。
一つ目はvalueの中に"(ダブルクォーテーション)があると、そこでvalueが終わりと認識されるのかそれ以降の文字が表示されなくなってしまいます。
たとえば
value="abc"def" のようになっているときフォームにはabc"defと表示してほしいのですがabcまでしか表示できません。
ソースで確認すると
value="abc"def"となっているのですがこれをすべて表示する方法はありますでしょうか?

もう一点、valueに&を入れると以降の文字が認識されません。これは"と違ってなぜ無視されるのかよくわからず、調べても見当たらなかったのでその理由と回避方法がわかりましたらご教授願います。

以上、よろしくお願いします。

A 回答 (3件)

> value="abc"def" のようになっているときフォームにはabc"defと表示してほしいのですがabcまでしか表示できません。



"abc"def"のままだと一つ目のダブルクォテーションから始まった文字列が
二つ目のダブルクォテーションで終わりと認識されます。
なので、CGIから返す際にでも、二つ目ダブルクォテーションの前に
「\」を入れましょう。こういう作業をエスケープといいます。

> もう一点、valueに&を入れると以降の文字が認識されません。

&も上記と同じ発想です。
「&」と「特殊文字」の二つの単語でググれば出てきます。

ちなみにですが、こういう時は文章では伝わりにくい部分があるので、
ソースを抜粋して、記載されることをお勧めします。
    • good
    • 0

再表示する時に実体参照に置き換えてやります。


"→" → value="abc"def"

&があるとそれが実体参照の始まりだと見なされてしまうので、&も置き換えます。
&→&

また同様に<や>も普通、置き換えておきます。
<→&lt;
>→&gt;
(inputだと一応問題ないけど、textareaだと</textarea>とか入力されてるとおかしくなる)
    • good
    • 0

CGIスクリプトの方で「実体文字」として扱えば良いのでは?


そして返す結果の表示で元の記号にさせると。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!