単一引用符をエスケープするにはどうすればよいですか?


188

'JavaScriptで(単一引用符)をエスケープするにはどうすればよいですか?

これは私がそれを使おうとしているところです:

<input type='text' id='abc' value='hel'lo'>

上記のコードの結果は、テキストボックスに「hel」と入力されています。'を\'に置き換えようとしましたが、これは私が得ているものです。

<input type='text' id='abc' value='hel\'lo'>

上記のコードの結果は、テキストボックスに「hel \」と入力されています。

単一引用符をエスケープするにはどうすればよいですか?


こんにちは、これはHTMLに関する質問です。質問にHTMLのタグを付け直しましたが、質問でそれを変更したい場合があります。
Benjamin Manns 2010年

回答:


357

HTMLエンティティを使用できます。

  • &#39; ために '
  • &#34; ために "
  • ...

詳細については、HTMLでの文字エンティティ参照をご覧ください。


39
属性値に二重引用符を使用する必要があるのはなぜですか?
ガンボ

5
@Pascal MARTIN:XMLでは、属性値に単一引用符も使用できます。(w3.org/TR/xml/#NT-AttValueを参照)
Gumbo

4
@ガンボ:うおo!単一引用符で囲まれた属性値を使用しているXMLドキュメントを見たことがありません。だから私はこれが実際に有効だとは思わなかった;; 私は(もう一度)質問に答えている間に何かを学びました。そう、それらのコメントをありがとう!
Pascal MARTIN

5
私はこれが古いことを知っていますが、次のHTMLエンティティがあることは注目に値します"&quot;
daiscog

1
@ Pascal、w3cバリデーターは、単一引用符が属性に有効であることを示します。そして、stackoverflow.com
questions / 2210430 /…を

62

&apos;(IEではiffyです)または&#39;(どこでも動作するはずです)を使用できます。包括的なリストについては、W3C HTML5名前付き文字参照またはWebPlatform.orgのHTMLエンティティテーブルを参照してください。


うわー、書いてから久しぶりです。それをキャッチしてくれてありがとう-W3CとWebPlatform.orgの2つのテーブルへのリンクを更新しました。
Benjamin Manns 2013年

VXML <var>では文字列変数値が属性定義の通常の二重引用符内の単一引用符として示されるため、これらはVXML <var>式属性を除いて「どこでも」機能します。<var name = "myvar" expr = "'hel \&apos; lo'" />
スティーブコーエン

9

HTMLのコンテキストでは、HTMLを使用してその文字を表す必要があります。また、HTMLの場合は、数値参照 &#39;&#x27;16進数)を使用する必要があります。

<input type='text' id='abc' value='hel&#39;lo'>

どういう意味かわかりませんでしたcontext of html
coding_idiot

@coding_idiot HTMLパーサーが解析プロセス中に遭遇する可能性があるさまざまなトークンを見てください。各状態には、入力に基づいてトリガーされる解析ルールの異なるセットがあります。すべての州で文字参照が許可されているわけではありません。ここで、属性値(一重引用符)を見ると、&aが文字参照の始まりを示していることがわかります。
ガンボ2014年

7

それをテキストエンティティとして表現します(ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'>

6

おそらく最も簡単な方法:

<input type='text' id='abc' value="hel'lo">


-1

javascript inbuild関数のエスケープとアンエスケープを使用する

例えば

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

これは、属性で使用される巨大なjson文字列化データがある場合に役立ちます


escapeユニコードセーフではありません。仕様では、その使用は推奨されていません。
クエンティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.