web-dev-qa-db-ja.com

HTML属性に単一引用符を使用するのは正しいですか?

最近、私はこれの多くを見てきました:

<a href='http://widget-site-example.com/example.html'>
    <img src='http://widget-site-example.com/ross.jpg' alt='Ross&#39;s Widget' />
</a>

HTMLで一重引用符を使用することは有効ですか?上記で強調したように、アポストロフィをエスケープする必要があるため、問題もあります。

65
Ross

単一引用符を使用することは確かに有効です( HTML 4.01、セクション3.2.2 )。私はそのような傾向に気づいていませんが、おそらくあなたが訪れたウェブサイトを動かすフレームワークがあります。

52
Greg Hewgill

二重引用符文字列リテラルを使用するプログラミング言語を使用してHTMLを動的に生成する場合、単一引用符を使用すると便利です。

例えば.

String.Format("<a href='{0}'>{1}</a>", Url, Desc)
45
Ady

PHPを使用してHTMLを生成する場合、次のようなことが簡単になります。

$html = "<img src='$url' />";

PHPは、二重引用符で囲まれた文字列の変数を解析します。

12
Dean Rather

誰かが二重引用符で囲まれた文字列を使用してその中の変数を解析している場合、または文字列連結演算子を使用しないようにするために、PHP.

例:

echo "<input type='text' value='$data'/>";

の代わりに

echo "<input type=\"text\" value=\"$data\" />";

または

echo '<input type="text" value="' . $data . '" />';

最近では、HTMLには二重引用符を、Javascriptには一重引用符を常に使用しています。

4
Imran

二重引用符を埋め込む方が簡単です。

3
SomeGuy

ASP.NETでは、属性で data-binding expression を使用している場合、単一引用符を使用する方が簡単です。

<asp:TextBox runat="server" Text='<%# Bind("Name") %>' />
3
Danko Durbić

(X)HTMLでは単一引用符は完全に合法です。一方、バックスラッシュを使用してエスケープすることはできません。 <img src='http://widget-site-example.com/ross.jpg' alt='Ross\'s Widget' />は、代替テキスト「Ross \」と空のsおよびWidget/Widget'属性。 HTMLでアポストロフィをエスケープする正しい方法は&#39;

2
Ms2ger

PHPでは、エコーは複数のパラメーターを取ります。したがって、連結演算子を省略したい場合は、次のようなことをして、依然として二重引用符を使用できます:

echo '<input type="text" value="', $data, '" />';
2
matv

単一引用符を使用すると、すっきりしたきれいなページが生成されます。あなたはHTML文字列でそれらをエスケープするべきではありません、それは使用する選択です...私の好みは通常一重引用符であり、文字列に一重引用符を含める必要がある場合(たとえば、文字列内の文字列の区切り文字として)、一方には二重引用符を使用し、他方には単一引用符を使用します。

1
Anthony

html を有効にするには html4 または xhtml の場合、両方の single-quotes または 二重引用符 は属性に対して機能します。 HTML4はここで検証できます: https://validator.w3.org/

最新のブラウザのみをサポートie1 以上)の場合、一重引用符、二重引用符、およびnoを許可する html5 構文を使用できます引用符(属性の値に特殊文字がない限り)。 HTML5はここで検証できます: https://validator.w3.org/n

1
Eric

 SHIFT

0
Snuggs

単一引用符を使用したい別のケース:JSONデータをデータ属性に保存する:

<tr data-info='{"test":true}'></tr>

JSONオブジェクトキーは二重引用符で囲む必要があるため、属性自体はできません。

0
bryc

一重引用符とは何ですか?

現在のタグ内で同じ引用スタイルを保持している限り、HTMLコード全体でシングル/ダブルクォートを問題なく使用できます(多くのブラウザはこれについて文句を言わず、検証は引用、同じで終わる、同じ礼儀の中)

ランダムな引用スタイルへの無料サポート!!! (イェイ; D)

0

私はこれが古いスレッドであることを知っていますが、それでも非常に重要です。

生成されたHTMLで引用符を制御したい場合、PHP(および他の多くの言語で利用可能な同様の呼び出し))で sprintf() 関数を使用できます。

$html = sprintf('<a href="%s">%s</a>', $url, $text);

Sprintf()を使用すると、データベースまたは構成ファイルから取得するか、変換メカニズムを介してフォーマット文字列を簡単に変更できます。

非常に読みやすく、生成されたHTMLで二重引用符または単一引用符のいずれかを使用できます。変更はほとんどなく、エスケープすることはありません。

$html = sprintf("<a href='%s'>%s</a>", $url, $text);
0
leftclickben