为什么需要HTML字符实体?他们有什么好处?我没有看到这一点。
答案 0 :(得分:22)
两件主要的事情。
答案 1 :(得分:14)
“1 < 2
”可让您在页面中添加“1 < 2
”。
答案很长:
由于HTML使用“<
”打开代码,因此如果您希望将其作为文字输入,则不能只输入“<
”。因此,您必须在我的页面中说“我想要文本 <
”。设计HTML(或者实际上是SGML,HTML的前身)的人决定使用“&
某些东西 ;
”,所以你也可以放置像非破坏空间这样的东西:'{ {1}}'(未折叠或允许换行的空格)。当然,现在你需要一种方式来说'
',所以你得到'&
'...
答案 2 :(得分:7)
除了&
,<
,>
,"
以及可能
之外,它们不是。对于所有其他角色,只需使用UTF-8。
答案 3 :(得分:4)
在SGML和XML中,它们不仅仅适用于角色。它们是通用的包含机制,它们用于特殊字符只是众多案例中的一种。
<!ENTITY signature "<hr/><p>Regards, <i>&myname;</i></p>">
<!ENTITY myname "John Doe">
这种实体对网站没用,因为它们只能在XML模式下工作,如果不在浏览器配置中启用“验证”解析模式,就不能使用外部DTD文件。
实体可以递归扩展。这允许使用XML进行拒绝服务攻击,称为“Billion Laughs Attack”。
Firefox在内部使用实体(在XUL等中)用于国际化和品牌无关的消息(以使Flock和IceWeasel的生活更轻松):
<!ENTITY hidemac.label "Hide &brandShortName;">
<!ENTITY hidewin.label "Hide - &brandShortName;">
在HTML中,您只需<
,&
和"
即可避免文本和标记之间存在歧义。
所有其他实体基本上都被Unicode编码废弃,并且仅仅作为便利性(但是一个好的文本编辑器应该有可以替换它们的宏/片段)。
在XHTML中,除了少数几个实体之外的所有实体都存在问题,因为无法使用独立的XML解析器(例如
将无效)。
要解析所有需要验证 XML解析器(选项通常称为“解析外部”)的XHTML实体,这些实体较慢且需要设置DTD目录。如果您忽略或搞砸了DTD目录,您将参与DDoS of W3C servers。
答案 4 :(得分:3)
字符实体用于表示为HTML for.ex.保留的字符。 &lt;,&gt;,/,&amp;等,如果你想在你的内容中表示这些字符你应该使用字符实体,这将有助于解析器区分内容和标记
答案 5 :(得分:1)
您使用实体来帮助解析器区分何时应将字符表示为HTML,以及您真正想要向用户显示的内容,因为HTML将为自己保留一组特殊的字符。
以HTML格式输入
我的意思不是那样&lt; / sarcasm&gt;
会导致“&lt; / sarcasm&gt;”标签消失,
e.g。
我不是那个意思
因为HTML没有这样定义的标签。在这种情况下,使用实体将允许文本正确显示。
e.g。
不,真的! &安培; LT /讽刺&安培; GT;
给出
不,真的! &LT; /讽刺&GT;
根据需要。