html中需转义、&、"、'五字符,_通常无需转义但混用markdown时需写\_;短代码用加转义,多行用。

HTML 里想原样显示 、<code>>、&、" 或下划线 _ 这类字符,不能直接敲,否则浏览器会当标签或实体解析——尤其是 _ 虽然本身不是 HTML 特殊字符,但常在代码块、路径、变量名中出现,一不留神就被 Markdown(如果混用)或 CSS(如 text-transform: lowercase)干扰。核心原则就一条:要显示什么,就得用对应转义序列或包裹方式让它“不被解释”。
哪些字符必须转义?为什么 _ 通常不用但有时要小心
HTML 有五个预定义实体必须转义,否则可能破坏结构或报错:
→ <code><(否则被当成标签起始)-
>→>(闭合标签或比较符时易出错) -
&→&(所有实体都以&开头,不转义会导致解析失败) -
"→"(属性值用双引号时,内部引号必须转义) -
'→'(单引号,XML 兼容需要,HTML5 可用但非必需)
_ 不在其中——它不是 HTML 特殊字符,纯文本中直接写 _ 就行。但注意两种例外场景:一是放在 <pre class="brush:php;toolbar:false;"></code> 或 <code><code></code> 里时,可能被 CSS 的 <code>white-space</code> 或 <code>font-family</code> 影响显示;二是混用 Markdown 渲染器(如 GitHub README),下划线会被误判为斜体语法 <code>*text*</code> 或 <code>_text_</code>,此时需用反斜杠逃逸:<code>_</code>。</p>
<H3><code><code></code> 和 <code><pre class="brush:php;toolbar:false;"></code> 怎么选?别只图方便套一层</H3>
<p>二者都用于显示原始文本,但语义和行为不同:</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/2158" title="拍我AI"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175680310874179.png" alt="拍我AI" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/2158" title="拍我AI">拍我AI</a>
<p>AI视频生成平台PixVerse的国内版本</p>
</div>
<a href="/ai/2158" title="拍我AI" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<ul>
<li><code><code></code>:行内元素,适合短代码片段,如函数名 <code><code>document.getElementById</code></code>。它<strong>不会保留换行和多余空格</strong>,CSS 默认是 <code>white-space: normal</code>。</li>
<li><code><pre class="brush:php;toolbar:false;"></code>:块级元素,保留所有空白符和换行,适合多行代码、配置块。但默认字体等宽,且可能撑开容器——如果只是想让单个 <code>_</code> 或 <code>&</code> 不被解析,<code><pre class="brush:php;toolbar:false;"></code> 属于杀鸡用牛刀。</li>
</ul>
<p>正确做法:<strong>单字符/短文本用转义实体;代码片段优先用 <code><code></code> + 转义;多行结构化内容才上 <code><pre class="brush:php;toolbar:false;"></code></strong>。例如:</p>
<pre class="brush:php;toolbar:false;"><p>调用 <code>get_user_by_id(id)</code> 时,<code>id</code> 不能含 & 符号。</p></pre>
<h3>实际写 HTML 时最容易踩的三个坑</h3>
<p>不是记不住转义码,而是忽略上下文导致白忙活:</p>
<ul><li>
<strong>在属性值里忘了转义引号</strong>:比如 <code><div title="User's name"> 会断在 <code>'s 处,应写成 <div title="User's name"> 或改用双引号包裹单引号属性值(但稳妥起见仍建议转义)。
<li>
<strong>把 <code> 当万能空格乱用:它不可折行、不参与单词间距计算,仅用于强制不换行空格。想控制文字间距请用 CSS letter-spacing,而非堆 。
_ 实际是全角下划线(U+FF3F)或连字符(U+2013),浏览器显示异常。解决方法:粘贴后用开发者工具看 DOM,或先粘到纯文本编辑器(如 Notepad)过滤格式。真正麻烦的从来不是“怎么打出 _”,而是你不确定它此刻是普通字符、CSS 样式目标、还是 Markdown 解析器眼中的语法符号——动手前先看清楚渲染链路在哪一环生效。










