
簡単な問合せフォームを作成中に文字実体参照に変換した文字が、元に戻されてしまい困っています。簡単なサンプルを作成してみましたが、以下の様な状態です。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- CAD・DTP Auto CAD LT → Auto CAD 1 2022/04/20 12:29
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
utf-8のマシンでsjisのデータフ...
-
Perlでのマッチング処理について
-
正規表現
-
CASL2の仕様での英単語の格納方法
-
Perlの初歩
-
半角カナから全角カナへ
-
SUBMIT時の入力文字のURLエンコ...
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
Perlで一行で文字列の置き換え
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
cgi perlの条件式にて
-
全角英数字の必要性が理解できない
-
位置指定の文字マッチングと同...
-
1つのセルに1つ以上のデータ...
-
Excelの中に全角ひらがな、漢字...
-
このHPのアドレスバーの区切り...
-
WORDで改ページすると時々グレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InputMan の imTextについて
-
文字実体参照が勝手に変換され...
-
チェックボックスの複数選択の...
-
もっとも初歩的なデータの渡し方を
-
常用漢字?でない文字を判定す...
-
機種依存文字の文字コード変換
-
色の指定
-
formデータのデコード「s///」...
-
半角と全角の文字数カウント方法
-
Perlの初歩
-
正規表現でカンマを対象にする方法
-
特殊文字をPOSTした際の動作は?
-
次ページ処理で途中つまりました
-
文字化けを回避したい
-
ダブルクォート文字などをフォ...
-
index関数と英語文字
-
nkfとjcodeの使い方の違いについて
-
SJISに関する少々複雑な問題
-
パターンマッチ変換について
-
戻り値の意味がわかりません…
おすすめ情報