为HTML属性使用单引号是否正确?

时间:2008-10-28 10:18:34

标签: html syntax coding-style apostrophe

最近我看到了很多这样的事情:

<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中使用单引号是否有效?正如我在上面强调的那样,它也存在问题,因为你必须逃避撇号。

16 个答案:

答案 0 :(得分:51)

使用单引号(HTML 4.01, section 3.2.2)当然有效。我没有注意到这种趋势,但也许有一些框架可以为您访问过的网站提供支持,这些网站恰好使用单引号引用。

答案 1 :(得分:45)

当使用使用双引号字符串文字的编程语言动态生成HTML时,我发现使用单引号很方便。

e.g。

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

答案 2 :(得分:12)

使用PHP生成HTML时,可以更容易地执行以下操作:

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

将字符串与带有字符串的变量连接起来,因为PHP用双引号字符串解析变量。

答案 3 :(得分:4)

有人可以在PHP中使用它来避免转义“如果他们使用双引号字符串来解析其中的变量,或者避免使用字符串连接运算符。

示例:

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

而不是

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

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

现在我总是坚持使用HTML的双引号和Javascript的单引号。

答案 4 :(得分:3)

当您想要嵌入双引号时,它会更容易。

答案 5 :(得分:3)

在ASP.NET中,如果在属性中使用data-binding expressions,则使用单引号会更容易:

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

答案 6 :(得分:2)

单引号在(X)HTML中完全合法。另一方面,使用反斜杠来逃避它们不是。 <img src='http://widget-site-example.com/ross.jpg' alt='Ross\'s Widget' />是带有替代文字“Ross”的图片,以及空sWidget / Widget'属性。在HTML中转义撇号的正确方法是&#39;

答案 7 :(得分:2)

在PHP中,echo采用多个参数。所以,如果想要省略连接运算符,他们可以做类似的事情并且仍然使用双引号:

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

答案 8 :(得分:1)

单引号生成一个更简洁的页面。你不应该在HTML字符串中转义它们,你可以选择使用它...我的偏好通常是单引号,如果我需要在字符串中包含单引号(例如作为字符串中字符串的分隔符),我使用双引号作为一个&amp;单身为另一个。

答案 9 :(得分:1)

如果您希望有效,则都适用于属性。可以在此处验证HTML4:https://validator.w3.org/

如果您是supporting only modern browsers及更高版本),那么您可以使用语法,该语法允许使用单引号,双引号和无引号(只要没有特殊内容)属性'值中的字符)。可以在此处验证HTML5:https://validator.w3.org/nu

答案 10 :(得分:0)

针对单引号的内容是什么?

你可以在你的html代码中使用单/双引号而没有任何问题,只要你在当前标签内保持相同的引用风格(许多浏览器都不会抱怨这个,并且验证只是想要,如果你从引用开始,以同样的方式结束,在相同的适当内容中)

免费支持随机引用样式! (耶; D)

答案 11 :(得分:0)

我知道这是一个老线程,但仍然非常相关。

如果要控制生成的HTML中的引号,可以使用PHP中的sprintf()函数(以及许多其他语言中提供的类似调用):

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

使用sprintf()可以通过从数据库或配置文件中检索格式字符串,或通过转换机制轻松修改格式字符串。

它非常易读,并且在生成的HTML中允许使用双引号或单引号,几乎没有任何更改,也不会有任何转义:

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

答案 12 :(得分:0)

为什么不保存按 SHIFT 键。相同的milage少一次击键。

答案 13 :(得分:0)

您可能希望使用单引号的另一种情况:在数据属性中存储JSON数据:

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

JSON对象键必须是双引号,因此属性本身不能。

答案 14 :(得分:0)

让我们彻底解决这个争论


  1. 双引号可以
  2. 单引号可以
  3. 没有引号也可以,只要您没有以下字符之一:
    • 空间(显然)
    • "<" 或 ">"(有意义)
    • 等号(不知道为什么但可以)
    • 任何类型的引用:双引号、单引号、反引号(同样是有道理的)

有趣的是,即使在今天,有些人仍然坚持“仅双引号”标准,这从来都不是真正的标准,而是一种惯例。此外,如果您的语言将撇号作为自然元素(英语,有人吗?),那就更方便了,但在我看来,增加 PHP 字符串组合的复杂性的代价太高了。

答案 15 :(得分:-4)

你应该完全避免引用。

在您的示例中,只有一个带引号的属性实际上需要引用。

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

如果您使用引号,则没有严格的规则,但我已经看到最常见的单引号,如有必要,内部会有双引号。

使用双引号不会传递一些验证器。