HTML 里的小于号 < 是标签的开始符号。如果你在文章里写「3 < 5」,浏览器会把 < 当成标签开始,后面的东西会被误解成标签。
为了避免这种歧义,HTML 设计了一套「实体」(entity):用 &实体名; 的形式表示特殊字符。< 表示小于号,> 表示大于号,& 表示 & 本身," 表示引号。
为什么 & 也要转义?因为它是实体的开始符号。如果文章里直接写 <,浏览器会把它当成实体转成 <,而不是显示字面上的「<」四个字符。所以想显示 & 本身,要写成 &。
除了名字形式,还有数字形式:< 是 < 的十进制,< 是十六进制。数字形式更通用——所有字符都能写成数字形式,但只有一部分有对应的名字。
实际建议:把用户输入的内容插入 HTML 之前,一定要转义 & < > " ' 这五个字符。这是防 XSS 攻击的第一道关,任何后端框架都默认做了,但如果手写 HTML 拼接就别忘了。