HTML中是否允许使用单引号?

138 html

我是PHP中使用双引号的大用户,这样我就可以插入变量而不是连接字符串.因此,当我生成HTML时,我经常使用单引号来设置标记字段.例如:

$html = "<input type='text' name='address' value='$address'>";
Run Code Online (Sandbox Code Playgroud)

现在,这对我来说比任何一个都更具可读性

$html = "<input type=\"text\" name=\"address\" value=\"$address\">";
Run Code Online (Sandbox Code Playgroud)

要么

$html = '<input type="text" name="address" values="' . $address . '">' ;
Run Code Online (Sandbox Code Playgroud)

从简短的搜索中我听到有人说每个浏览器都无法识别HTML字段的单引号.因此,我想知道哪些浏览器在识别单引号HTML时会出现问题?

Gre*_*ill 142

这类似于什么时候HTML中的单引号变得如此受欢迎?.HTML中的属性的单引号始终是规范允许.我认为任何浏览器都不会理解它们.

  • 我需要提到的一件事是,一些HTML客户端(不是必需的浏览器)在单引号上有兼容的问题.一个奇怪的例子是,在Hotmail中,如果使用`<img rel="nofollow noreferrer" src ='cid:xxx'... />`来显示内嵌图像,它将根本不显示,因为内容ID被忽略.你必须使用`<img rel="nofollow noreferrer" src ="cid:xxx"... />. (12认同)

Ada*_*ire 48

正如PhiLho所指出的那样,尽管人们普遍认为单一引号不允许属性值,但这种看法是错误的.

XML标准允许单和双引号的属性值.

XHTML标准没有说明改变这一点,但是一个相关的部分说明必须引用属性值,在示例中使用双引号,这可能会导致这种混淆.这个例子只是指出XHTML中的属性值必须满足XML中属性值的最低标准,这意味着它们必须被引用(与不关心的纯HTML相对),但不限制您使用单个或双引号.

当然,你总是有可能遇到一个不符合标准的解析器,但是当发生这种情况时,所有的赌注都会被取消.因此,最好只遵守规范所说的内容.毕竟,这就是我们有规格的原因.

  • 但HTML基于SGML(它是基于XML的XHTML),因此引用XML规范并不是很有用...... (7认同)
  • +1表示XML标准的链接.我知道这是一个旧线程,但为了完整起见,人们应该特别注意标准中的[AttValue](http://www.w3.org/TR/REC-xml/#NT-AttValue)语法规范.如果您可以阅读EBNF(非常类似于正则表达式),您将看到它允许使用单引号和双引号来分隔属性. (2认同)

Fly*_*wat 15

我听到有人说每个浏览器都无法识别HTML字段的单引号

那个人错了.

  • 不必要.我可以在几分钟内创建一个浏览器,无法识别HTML字段的单引号.当然,还有更多它不承认...; P (29认同)

con*_*exo 12

当我在规范的更新版本中寻找有关此内容的信息时,我花了相当长的时间才找到它,如下所示:

\n

\n
\n

超文本标记语言

\n

生活标准 \xe2\x80\x94 最后更新于 2021 年 9 月 17 日

\n

[...]

\n

13.1.2.3 属性

\n

单引号属性值语法

\n

属性名称,后跟零个或多个 ASCII 空格,后跟单个 U+003D EQUALS SIGN 字符,后跟零个或多个 ASCII 空格,后跟单个 U+0027 撇号字符 (\'),最后跟属性值,除了上面给出的属性值要求外,不得包含任何文字 U+0027 撇号字符 (\'),最后后跟第二个单个 U+0027 撇号字符 (\')。
\n在以下示例中,类型属性使用单引号属性值语法给出:

\n
<input type=\'checkbox\'>\n
Run Code Online (Sandbox Code Playgroud)\n

如果使用单引号属性语法的属性后跟另一个属性,则必须使用 ASCII 空格分隔这两个属性。

\n
\n

\xe2\x80\x94 https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

\n


Phi*_*Lho 6

不要相信你在互联网上看到的一切......
有趣的是,我刚刚回答了类似于某人的事情,声称单引号在XHTML中无效......

嗯,我在打字时看上面,看到Adam N传播了同样的信念.如果他可以支持他的肯定,我会收回我写的内容...... AFAIK,XML是不可知的并接受这两种引用.我甚至尝试并验证了没有问题的XHTML页面只有单引号.


小智 5

唯一的问题是数据进入文本输入字段。考虑

<input value='it's gonna break'/>
Run Code Online (Sandbox Code Playgroud)

同:

<input value="i say - "this is gonna be trouble" "/>
Run Code Online (Sandbox Code Playgroud)

你无法逃避,你必须使用htmlspecialchars.

  • 我认为我们可以选择使用单引号或双引号的原因是为了避免在这种情况下必须转义字符。如果您的值中只有双引号,请用单引号将其括起来,以避免像这样转义双引号:`&lt;input value="it's not going break"/&gt;` 反之亦然: `&lt;input value='我说 - “这不会有麻烦”'/&gt;`。 (4认同)
  • 但是你可以这样做:`&lt;input value='it's going break'/&gt;` (2认同)