73

最近看到很多这样的:

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

4

16 回答 16

59

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

于 2008-10-28T10:22:22.563 回答
47

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

例如

String.Format("<a href='{0}'>{1}</a>", Url, Desc)
于 2008-10-28T10:25:54.820 回答
12

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

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

而不是将字符串与变量与字符串连接起来,因为 PHP 会解析双引号字符串中的变量。

于 2008-10-28T10:28:02.163 回答
4

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

例子:

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

代替

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

或者

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

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

于 2008-10-28T13:17:43.957 回答
3

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

于 2008-10-28T10:32:01.173 回答
3

在 ASP.NET 中,如果您在属性中使用数据绑定表达式,则使用单引号会更容易:

<asp:TextBox runat="server" Text='<%# Bind("Name") %>' />
于 2008-10-28T10:51:04.783 回答
3

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

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

JSON 对象键必须用双引号括起来,因此属性本身不能。

于 2016-12-04T14:24:29.337 回答
2

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

于 2009-01-14T18:49:00.073 回答
2

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

echo '<input type="text" value="', $data, '" />';
于 2010-07-27T18:05:36.670 回答
1

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

于 2010-10-10T12:56:02.073 回答
1

如果您希望成为有效的,那么都适用于属性。HTML4 可以在这里验证:https ://validator.w3.org/

如果您只支持现代浏览器和更高版本),那么您可以使用允许单引号、双引号和无引号的语法(只要属性值中没有特殊字符)。HTML5 可以在这里验证:https ://validator.w3.org/nu

于 2015-10-30T16:18:11.880 回答
0

什么是反对单引号?

只要您在当前标签内保持相同的引用样式,您就可以毫无问题地在您的 html 代码中使用单引号/双引号(许多浏览器甚至不会抱怨这一点,并且如果您从一个引用,以相同的结尾,在相同的礼节内)

免费支持随机引用风格!!!(耶;D)

于 2008-10-28T10:31:40.673 回答
0

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

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

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

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

它非常易读,并且允许在生成的 HTML 中使用双引号或单引号,几乎不需要更改,并且从不转义:

$html = sprintf("<a href='%s'>%s</a>", $url, $text);
于 2013-02-02T06:26:18.050 回答
0

为什么不保存SHIFT按键。相同里程减少一次击键。

于 2013-07-29T17:23:40.873 回答
0

让我们永远解决这个争论


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

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

于 2021-03-17T12:50:49.460 回答
-6

你应该完全避免引用。

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

<!-- 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>

如果您确实使用引号,则没有硬性规定,但我见过最常见的单引号,必要时在内部使用双引号。

使用双引号不会通过某些验证器。

于 2014-10-17T18:56:00.977 回答