
簡単な問合せフォームを作成中に文字実体参照に変換した文字が、元に戻されてしまい困っています。簡単なサンプルを作成してみましたが、以下の様な状態です。
1.入力フォームを持ったHTMLに
「<>と<と>」
と入力し、xxx.cgiに渡します。
2.xxx.cgi内で入力文字列を取得し、文字実体参照に変換後<hidden>で値を保持、再度xxx.cgiに<hidden>の文字列を渡すようにします。この時点で入力値は
「<>と&lt;と&gt;」
となります。
3.再度xxx.cgiが呼ばれると、文字実体参照に変換する処理が行われる為、入力値が
「&lt;&gt;と&amp;lt;と&amp;gt;」
となるはずですが、
「<>と&lt;と&gt;」
となってしまいます(変換処理が行われているはずなのに変換されていない)不思議に思って変換前のCGIの引数を確認してみると、
「<>と<と>」
と文字実体参照が元に戻されてしまっています。
ちなみに文字実体参照の変換処理は$valueに対象の文字が入っているとして以下の方法で変換しています。
----------
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\n/<BR>/g;
----------
こういった現象についてでも何か分かるようでしたら宜しくお願いします。
No.1ベストアンサー
- 回答日時:
どうやら<などをHiddenで渡しても渡すときに元の<にもどってしまうようです。
(HIddenではなくtextとして表示させて送るのと同じ。見えているか見えていないかの違い)
↑経験則なので仕様なのかどうかは知りません。
moon_nightさん、ご回答ありがとうございます。
私だけでなく他の方も同様の現象が発生していたのですね。
ただ疑問なのが、HTMLからCGIに「<>と<と>」を渡す時はそのまま渡るのに、CGIからCGIに渡す時は元に戻ると言った部分が気になります。

No.2
- 回答日時:
ブラウザは以下のような動きをします。
・テキストボックスなどに <> と手入力した場合
⇒ブラウザはそのまま <> と解釈して、メモリに格納。
・HTMLのvalueに <> と入れた場合
⇒ブラウザはHTMLをParseする際に、<>に変換します。
そして、変換後の <> をメモリに格納します。
valueなどに <> を入れたい場合、HTML上では <> と書くのがルールです。ブラウザがそのHTMLを解釈するときに <> を <> に変換するのもルールです。
もしブラウザがそのような変換をしないならば、テキストボックスなどの初期値に、" を与えることができなくなります。
<input type="text" name="x" value=""">
とした場合に、ブラウザが " を " に変換してくれるから、初期値として " が入るわけです。
基本的に、全てのブラウザは上記のような振る舞いをすると思ってください(厳密に言うと、極一部の例外はあります)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特殊文字をPOSTした際の動作は?
-
InputMan の imTextについて
-
チェックボックスの複数選択の...
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
英数字のみ全角から半角に変換
-
各項目がダブルクォーテーショ...
-
xmlファイル内の文字列置換
-
CSVの定義
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
-
WORDで改ページすると時々グレ...
-
[VBA][Excel]クリップボードか...
-
データにカンマが入ったCSVデー...
-
C#でcsvファイルの列を入れ替え...
-
csvデータのダブルクォーテーシ...
-
正規表現で、全角文字を半角文...
-
VBA 文字に半角が含まれて...
-
マクロを使ってフォルダー内に...
-
MFCのコントロールにUTF-8の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InputMan の imTextについて
-
文字化けを元に戻せますか?
-
nkfとjcodeの使い方の違いについて
-
正規表現
-
半角カナから全角カナへ
-
チェックボックスの複数選択の...
-
Perlでのマッチング処理について
-
中国語のコードについて
-
utf-8のマシンでsjisのデータフ...
-
文字実体参照が勝手に変換され...
-
unicodeの表示
-
PerlでUTF8をEUCに変換
-
CASL2の仕様での英単語の格納方法
-
頭文字を大文字にしたい
-
文字をISO Lathin 1 文字コード...
-
textareaでHTMLタグを使いたい
-
常用漢字?でない文字を判定す...
-
「数値文字参照への変換するソ...
-
アルファベットの変換?
-
デコードフォームについて。
おすすめ情報