
フォームに
<input name="txt_title" type="text" size="60">
というテキストがあります。
確認ボタンをおすと確認ページにSubmitされます。
確認ページに
<INPUT type="hidden" name="txt_title">
を設置しているのですが、
txt_titleに「"」とかを入力する場合、
value="タイトル"あああ""
と入ってしまい、登録するとき「タイトル」の文字までしか入ってきません。
いちおうHiddenにいれる文字は
$string =~ s/"/"/g;
で変換してから入れているのですが、どうしてでしょうか?またどうすればいいでしょうか。
シングルクォートだけでなく、テキストエリアの改行文字の入れ方も教えてください。

No.5ベストアンサー
- 回答日時:
だいぶ日が経ってしまいましたが、なんだか的はずれな回答ばかり増やしていたようなので、もう一度実行チェックしました。
>$string = "<INPUT type=\"hidden\" name=\"txt_title\" value=\"$G_form- >param('txt_booktitle')\">\n";
もしかしてこの出力用文字列を作ってからすべての「"」に変換をかけていましたか??
やり方としては以下のように
### 受信データのみに変換をかける
$value = $G_form- >param('txt_booktitle');
## 1。必要なら文字コード変換 (以下はjcode.pl 利用の場合)
jcode'convert(*value,'sjis');
## 2。特殊文字対策 受信データをhtml出力するなら以下の4つは変換しておくのがよい
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
print "Content-Type: text/html\n\n";
print <<END_OF_HTML;
-HTMLの中身-
<form name="form" method="post" action="test.cgi">
<INPUT type="hidden" name="txt_title" value="$value">
-その他のformの中身-
</form>
END_OF_HTML
うまく動きました。
No2の方法をとったといいますか、変換のタイミングがおかしかったようです。
とりあえず特殊文字を変換してしまってからHIDDENに入れてしまえばいいのですよね?
いっぱいレスいただいていたのに返事できなくてすみませんでした。
GOOからなぜかお知らせメールが来なかったのでレスされているのをしりませんでした。

No.3
- 回答日時:
>valueに"を入れるときは \"
済みません、これ間違いだったようです。
他で見たのを鵜呑みにして書いてしまいましたm(_ _)m。
&quot; が正しいようですけど、最初にうまくいってなかったのはなぜかな?
>hiddenのvalueには、&quot;ではいりません。
ページのソース表示をするとvalue属性内で&quot;となっているものは、
送信時には、%22 →デコードすると " に戻りますので、
これを勘違いされていただけかも。
textフィールドで表示してみて得られる状態と同じものがhiddenでも送信時データになります。

No.2
- 回答日時:
valueに"を入れるときは \"
<input type="hedden" value="タイトル\"あああ\"">
formをperlでprintするなら、\をエスケープされないよう''かq()でくくるか\\で出力
print q(<input type="hedden" value="タイトル\"あああ\"">);
print qq(<input type="hedden" value="タイトル\\"${title}\\"">);
textareaの改行は、以下のように改行されていればよいので
<textarea>
あa
いb
うc
</textarea>
perlでprintするなら \n
こちらは\をエスケープさせないといけないので""かqq()でくくる
print qq(<textarea>あa\nいb\nうc</textarea>);
この回答への補足
説明になっているかわからないのですが、現在こんなソースです。
G_form->param('txt_booktitle')部分を
どんなふうにして変換すればいいのでしょうか?
$string = "<INPUT type=\"hidden\" name=\"txt_title\" value=\"$G_form->param('txt_booktitle')\">\n";
print "Content-Type: text/html\n\n";
print <<END_OF_HTML;
-HTMLの中身-
<form name="form" method="post" action="test.cgi">
$string
</form>
END_OF_HTML
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォート文字などをフォ...
-
色の指定
-
文字コードの変換
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
エクセルで数値を全角文字(カ...
-
IEからEdgeへの移行に伴うIMEの...
-
MFCのコントロールにUTF-8の文...
-
CString から LPCTSTRの型に変換
-
EXCELからCSVにすると余計なカ...
-
VBA 文字に半角が含まれて...
-
フォントの色を保持したままセ...
-
COBOL・全角判定
-
COBOLでの全角文字の判定をした...
-
Excelについて質問です。 セル...
-
エクセルにMicrosoft Barcode C...
-
文字コードの%E3%80%とは何です...
-
Excel VBAでPDFファイルをMicro...
-
[VBA][Excel]クリップボードか...
-
Visual Studioで ユニコード "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InputMan の imTextについて
-
文字化けを元に戻せますか?
-
nkfとjcodeの使い方の違いについて
-
正規表現
-
半角カナから全角カナへ
-
チェックボックスの複数選択の...
-
Perlでのマッチング処理について
-
中国語のコードについて
-
utf-8のマシンでsjisのデータフ...
-
文字実体参照が勝手に変換され...
-
unicodeの表示
-
PerlでUTF8をEUCに変換
-
CASL2の仕様での英単語の格納方法
-
頭文字を大文字にしたい
-
文字をISO Lathin 1 文字コード...
-
textareaでHTMLタグを使いたい
-
常用漢字?でない文字を判定す...
-
「数値文字参照への変換するソ...
-
アルファベットの変換?
-
デコードフォームについて。
おすすめ情報