• 締切済み

HTMLについて

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

  • HTML
  • 回答数8
  • ありがとう数7

みんなの回答

  • Google
  • ベストアンサー率20% (1/5)
回答No.8

私は今までいろいろな言語で Web アプリケーションを開発してきたのですが selenity さんが言われている 4 キャラクタの置換は必須です。 質問されている画面は、確認ページのようなものだと思いますが </BODY> や CSS を入力された場合はどうなりますか? 操作者がだれか分かりませんが、第三者に Javascript などの ロジックを入力された場合、致命的なセキュリティホールになる可能性も あります。 出すぎたことを言うようですが、 急いでおられるのは納期がせまっている(過ぎている?)からだとと思いますが ユーザさんにご相談されてはどうでしょうか?

  • msystem
  • ベストアンサー率42% (79/186)
回答No.7

私もselenityさんと同意見です。 HTMLの仕様ですから「&quot;」にすべきだと思います。 valueの部分が変数ならなおさらです。 プログラムをしているのだから、仕様に合うように文字変換をするべきだと思います。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.6

普通であれば不等号は「&lt;」、「&gt;」、 ダブルクォートは「&quot;」 アンパーサント(&)は「&amp;」 の様に記述するのが筋だと思うのですが、、、

  • 1986
  • ベストアンサー率22% (113/506)
回答No.5

<INPUT TYPE=TEXT NAME=TEST VALUE="abc\"def"> と、「"」の前に「\」を入れてみてはどうですか?

  • meke2
  • ベストアンサー率41% (16/39)
回答No.4

このように <INPUT TYPE=TEXT NAME=TEST VALUE='abc"def'> 「'」で囲めば「"」が表示されるようにも出来ますよ~

forester
質問者

補足

画面でテキストボックスに入力された値を格納したいので、「'」で囲んでも、「'」が入力されてしまったら、結局同じことになってしまいます。。。

  • madman
  • ベストアンサー率24% (612/2465)
回答No.3

<INPUT TYPE=TEXT NAME=TEST VALUE="abc"def"> です。 「"」で囲まれた場合は"で「"」を表記します。

  • gillian
  • ベストアンサー率38% (5/13)
回答No.2

「"」は、「&quot;」と入力すればいいですよ。 従って、 <INPUT TYPE=TEXT NAME=TEST VALUE="abc&quot;def"> と書けばいいと思います。 Dreamweaverだと、このあたりはちゃんと変換してHTMLにしてくれるので、便利ですよ。

forester
質問者

補足

いろいろと調べた結果、エスケープ文字を入力すると正しく表示してくれる事は分かったのですが、なんぜ、テキストボックスに入力されるデータを格納するので、ユーザさんに「"はエスケープ文字を使って下さい」なんて言えません。 powerscriptで文字置換してくれる関数ってないのかなぁ???

  • x-game
  • ベストアンサー率42% (80/189)
回答No.1

こんにちは. <INPUT TYPE=TEXT NAME=TEST VALUE=abc"def> でもダメですか? 文字列を囲む"をはずしているだけですが.

forester
質問者

補足

早速のご回答ありがとうございます。 試しに上記の方法で実行してみたのですが、 「>」が入力された場合に、「>」以降の文字が画面上にラベルみたいに表示されてしまいました。

関連するQ&A

  • 変数にHTMLを代入する場合

    ただの文字列であれば $html = "abc"; で代入できますが、 たとえば$htmlという変数に 「 <a href="$url">$url</a> 」 という文字列を代入する場合にはどうすれば良いんでしょうか? もちろん$urlは変数名ではなく、代入された文字列を表示します。 (例:$url = "http://#/")

    • ベストアンサー
    • PHP
  • ASP C# 改行させたい

    マルチラインのテキストボックスに改行の入った文字列を入力して、そのテキストボックスをセッション変数に入れてからラベルに代入して表示すると改行がされないのですが、なにかいい方法があるのでしょうか?

  • formのvalueについて

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

    • ベストアンサー
    • HTML
  • fpoenからの改行コードの扱いについて

    ただいまMacOSX(10以降)でプログラミングをしています。このOSでは改行コードはLFつまり、"\n"が当てはめられているはずです。(でいいんでしょ??) ///// abc.txt(改行や空白もそのまま)////// abc def ghi ///////////////////////////////////// このテキストをfopenで開き、fgetsで1文字ずつスキャンしていて"\n"にぶちあたるとある変数をインクリメントし、最後にその行数を出すというプログラムを書いてます。 この場合改行"\n"は3回あるので最終的に3+1、つまりこのテキストは4行あるということを表示できるはずなのですが、なぜか改行が1回としか認識されず結果2行のテキストとして出力されてしまいます。 いろいろ試した結果、どうやら"\n"を判断できている場所はその次が空白の行の場合だけなのです。つまり、コンピュータ的には ///// abc.txt(改行や空白もそのまま)////// abc\n ←ここは次にdefという文字列がきているので\nが認識されていない def\n ←ここしか認識されていない   \n ←同様に次の文字列がくるので認識されていない ghi ///////////////////////////////////// としか認識されていないようなのです。 なぜ\nの続きが文字列であると なぜこのようなことになるのでしょうか? \nの扱い方が間違っているのでしょうか?解決方法がおかる方がいればよろしくおねがいします。

  • IFS変数について詳しい方教えて!!

    IFS変数というのを学習しました。 これは単語の区切りを認識する変数で、最初は空白とタブと改行が入っているのですが、他の文字を代入することもできるということまでは理解しました。 例として次のスクリプトが掲載されていました。 IFS=/ for i in /abc///def/ do echo $i done このスクリプトを実行すると 変数iにabc、defが順に代入され 最終的に標準出力へ abc def を表示するのだそうですが、 私の環境で全く同じスクリプトを作成して実行したところ abc def と表示されました。 /が空白に変換されて表示されるのはよいのですが、 どうも変数iに一気に全部の文字を代入してしまっている感じがします。 何度も見直したので、写し間違えてはいないと思うのです。 リナックスには色々な種類があるので、私の環境ではもっと別の書き方をする必要があるのでは、とも考えています。 私はレッドハットリナックス8.0を使用しています。 どなたか、お暇な時にでも助言をお願いします。

  • VS2005 VB.NET Windowsアプリ

    DataGridViewでチェックボックスを表示したり 文字列を表示する列を作りたいのですができますでしょうか? ------------------------------ | textbox  | checkbox  | |-----------------------------| |  abc   |   □     | |-----------------------------| |  def   |  文字    | |-----------------------------| |  def   |   □    | |-----------------------------|

  • c#の正規表現がうまくいきません

    c#の正規表現がうまくいきません 以下のhtmlから指定の文字列を抜き取ります(htmlは適当です) ---------------------------------------- <select class="iiy_name_list"> <option value="1347">abc</option> </select></td> <select class="sug_name_list"> <option value="761">def</option> </select></td> ---------------------------------------- 2行目の"abc"、5行目の"def"の2つをキャプチャで得たいのですが、 @"<option\s+[^>]*>(.*)</select>",という指定では5行目の"def"しか得られません forを使って2回のループで一つ目の変数に"abc"二つ目の変数に"def"を入れるには どうしたらよいのでしょうか? 以下のページを参考にしたのですが、うまくいきません… http://uchukamen.com/Programming1/RegEx/index.htm よろしくお願いします。

  • VBAで「"」の代入の仕方

    教えてください。 ある特定のセルに「abc"def」というような文字列を入力したいのですが VBAでどう書けばよいのでしょうか? 仮にA1のセルに入れようとした場合・・・ Cells(1, 1).Value = abc"def や Cells(1, 1).Value = "abc"def" ではエラーですよね。 すごく初歩的ですみませんが教えてください。 過去ログも見たのですが無いようでした。しかし、検索で過去ログにあるのを見つけた方は 差し支えなければ、検索時に指定した文字を教えてください。

  • C言語のポインタと配列

    どうにも理解しようとしていますが全体像が理解できないので、わかっていることわからないことまとめていくのでバンバン指摘してくださるとうれしいです。 1.配列の宣言には int a[]; a[] = {1,2,3}ですが、コンピュータは{"1","2","3"}の部分の数を数えて[]に代入しているので、 int [][3] = {{1,2,3},{4,5,6}}のような配列を作ったとき[][3]の部分の左側の数字も勝手に代入している。 この時なぜ3が勝手に代入されないかがわからない 2.数字とメモリ int s = {1,2,3}をメモリ的に表現すると、123の順に並んでいる。s[1]=2 int s[][2] = {{1,2,3},{4,5,6}}をメモリ的に表現すると123456に並んでいる。s[1][1]= 5 ここまで文字列以外の配列は添え字だけで管理されている。 3.文字列とポインタ char s[] = "abc"とするとメモリ的にはabc\0であり、[]には4が代入され、s[1]はb自身を指す。 char *s = "abc"をメモリで表すとabc\0であり、\0が来るまでを文字列と認識する。 sは&s[0]とも表現できるように、最初のアドレスを指し示している。 char *s[]= {"abc","def"}をメモリ的に表現するとabc\0def\0であり、[]には2がコンピュータにより判断されて代入される。\0までを文字列として表現しようとする。s [1] は"def"の最初のアドレスを指し示すが、s[1][1]とするとe自身を指すようになる。この時、s[1] = &s[1][0]と表現することは可能であると考えられる。 文字列を直接さす場合でも、ポインタで表現する場合でも、\0が要素の最後に来るのでしょうか? また、{{"abc","def"},{"ghi","jkl"}}を文字列で直接表す場合は char s[2][2] = {{"abc","def"},{"ghi","jkl"}}; となるかと思いますが char *s[2][2] = {{"abc","def"},{"ghi","jkl"}}; とするとs[1][1]でghiの最初のアドレスを、s[1][1][0]でg自身を表せるようになるのでしょうか?

  • TCHAR文字列内の検索について

    TCHAR文字列内の検索について 質問があります。 #include <tchar.h> TCHAR tex1[8]; TCHAR tex2[8]; TCHAR tex3[8]; TCHAR buf[128] = TEXT("abc,def,ghi"); TCHAR型で宣言された変数bufには、「abc,def,ghi」が格納されているとして、 結果的に tex1 → "abc" tex2 → "def" tex3 → "ghi" となるようなプログラムを作ろうと考えています。(buf内をコンマで区切って3つの変数に代入) まずコンマの位置が何文字目にあるか確認するために TCHAR ret[128]; TCHAR search[128] = TEXT(","); ret = _tcschr( buf, search); としてみましたが、やはりうまくいかずにエラーが出ます。 上記の目的を達成するにはどのようなプログラムを作ればよいのでしょうか? 環境はVisual C++ 2008 Expressで、C言語を使ってプログラミングしています。