HTML 里的小于号 < 是标签的开始符号。如果你在文章里写「3 < 5」,浏览器会把 < 当成标签开始,后面的东西会被误解成标签。

为了避免这种歧义,HTML 设计了一套「实体」(entity):用 &实体名; 的形式表示特殊字符。&lt; 表示小于号,&gt; 表示大于号,&amp; 表示 & 本身,&quot; 表示引号。

为什么 & 也要转义?因为它是实体的开始符号。如果文章里直接写 &lt;,浏览器会把它当成实体转成 <,而不是显示字面上的「&lt;」四个字符。所以想显示 & 本身,要写成 &amp;。

除了名字形式,还有数字形式:&#60; 是 < 的十进制,&#x3C; 是十六进制。数字形式更通用——所有字符都能写成数字形式,但只有一部分有对应的名字。

实际建议:把用户输入的内容插入 HTML 之前,一定要转义 & < > " ' 这五个字符。这是防 XSS 攻击的第一道关,任何后端框架都默认做了,但如果手写 HTML 拼接就别忘了。