【问题标题】:&, &amp, & All behave similarly in html. How and why?&、&amp 和 & 在 html 中的行为都类似。如何以及为什么?
【发布时间】:2023-04-06 17:49:02
【问题描述】:
P&G  
P&ampG  
P&G 

所有这些都是一样的。特殊实体的使用是否仅适用于 javascript/url?

【问题讨论】:

  • 宝洁无效。有些浏览器会为您自动修复。
  • 自动修复...?好的!我想更频繁地阅读有关这些的文档/手册/信息。
  • 是的,一些浏览器,但不是全部!

标签: html entity special-characters ampersand


【解决方案1】:

它们的意思不同。

P&G 包含一个未定义的实体引用&G,验证器会告诉你。浏览器对这些引用所做的就是按字面意思对待它们。如果浏览器开始识别新实体,可能会发生奇怪的事情。他们现在正在这样做,因为正在添加添加的entities as per HTML5 drafts。顺便说一句,&G 不在其中。

P&ampG 是一个非常相似的情况,除了一些解析器损坏的浏览器可能会错误地将&amp 部分视为 & 字符。

P&G 是代表宝洁的正确符号。

这与 JavaScript 无关,与 URL 无关,与一般的 HTML 文档内容无关。 URL 中经常需要和号,但这并不会使问题成为 URL 的问题。 JavaScript 代码通常写在 script 元素中,其中可能会应用特殊的解析规则,具体取决于 HTML 版本,但这取决于元素的内容模型。 (style 元素是类似的情况。)

【讨论】:

  • P&ampG 处理为P&G 不是“损坏”解析器的结果,而是HTML5 解析器的要求。您可以在链接到的实体列表的底部找到应该解释的命名字符引用列表,而无需尾随分号。
  • @Alohci,已发布的 HTML 规范要求首先在词法级别解析引用(使用 & 之后的所有名称字符),并且仅在与实体定义匹配之后。 HTML5 处于草稿级别(正在进行中)并且对问题含糊其辞,但即使在 HTML5 模式下,validator.w3.org 也会将 &ampG 标记为错误。
  • 是的,它不符合网页要求,但我认为对于在这种情况下解析器必须做什么才能符合要求,我认为这个要求一点也不含糊。 (我已经在 C# 中实现了一个 HTML5 解析器,虽然在那里处理字符的消耗/非消耗有点繁琐,但我从未怀疑过需要什么)。虽然规范还在草稿中(在最后一次电话会议上),但这是向后兼容现实世界网页所必需的,因此更改的可能性很小。
【解决方案2】:

为获得最佳效果,您应始终使用完整的&。期间。

嗯,除了在具有 CDATA 内容类型的环境中。在 HTML 中,这将是 <script><style><xmp><listing> 等元素。在 XHTML 中,仅在显式 CDATA 块中,以 <![CDATA[ .. ]]> 分隔。

如果你没有完整地写出引用,并不是所有的浏览器都会按照你想要的方式显示它,如果你不小心写了“select&copy&paste”之类的东西,你以后可能会遇到麻烦。

【讨论】:

    【解决方案3】:

    没有。甚至 HTML 也无法理解它们,因此它们被称为特殊字符。

    但是,现代浏览器会为您纠正这一点。 (现代浏览器修正示例):

    创建一个扩展名为 .htm|.html 的文档,并在输入 <h1>hi!</h1> 后保存在文档中。您将能够看到一些标题。这应该是错误的......(回到主题)

    有数百个这样的小傻瓜。但最重要的是,尽量遵循标准:

    1. 帮助您的同事更好地理解您的代码。
    2. 仅仅因为您的浏览器允许您这样做是老借口。
    3. 你可能会陷入麻烦而不记得是怎么回事?
    4. 阅读完整参考资料或http://www.w3schools.com/tags/ref_entities.asp

    尝试在浏览器中编写<>10<20<>,它会显示新的现代浏览器,如果旧的,谁知道会发生什么?

    【讨论】:

    • Saini Ji,你是对的,“嗨!”的标题也是如此。我知道特殊实体....只是对我的第二个/中间示例感到好奇。
    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多