將純文字轉換成 HTML 段落時,有三個值得牢記的規則:以空行分隔各段落、決定單一換行要變成 br 標籤還是普通空格,以及跳脫 HTML 視為標記分隔符的三個字元。文字轉 HTML 段落轉換器正好套用這些規則,把以空行分隔的文字區塊轉成由 p 元素組成的 HTML 片段,並搭配 br 標籤或空格。轉換器會在將每個區塊包進 p 元素之前,先跳脫 & 號、小於號和大於號,因此貼上的角括號絕對不會變成被注入的標記。單引號和雙引號則保持原樣,因為該片段的目標是 HTML 文字內容,而不是屬性值,這樣既能避免實體雜訊,又能保留原始字元。輸出會以原始碼形式顯示,可以直接複製到 CMS 原始碼檢視、HTML 電子郵件模板、程式碼編輯器或測試 fixture 檔,無需再做處理。整個轉換過程在瀏覽器本地執行,來源和輸出都不會離開目前的分頁。

段落轉換規則
純文字和 HTML 對「什麼算段落邊界」的看法並不一致。在文字編輯器中,兩個段落中斷會以兩個非空行之間的空行呈現;段落內部則由編輯器自動換行,不會插入任何分隔符號。在 HTML 中,p 元素會包住每個段落,而換行則由瀏覽器負責。文字檔中看起來像段落的內容,轉換後都需要自己的 p 元素;只是被自動換行的文字,則需要重新接回同一個段落。
這套轉換遵循一組小型的明確規則,必要時你可以手動套用來自行撰寫標記:
- 空行會分隔兩個段落。一個以上的空行會合併成單一邊界,所以兩個空行和一個空行的結果相同。
- 段落區塊內的單一換行,會依你選擇的模式,變成 br 標籤或單一普通空格。
- 每一行在分組前會先去除前後空白,整段輸入的頭尾空白也會一併移除。
- Windows(CRLF)與傳統 Mac(CR)的行尾會在分組前統一為換行字元,因此不論文字來源為何,規則都同樣適用。
三步驟將文字轉成 HTML 段落
- 貼上以空行分隔段落的純文字。開啟文字轉 HTML 段落轉換器,把文字區塊貼進輸入區,確認每個預定段落之間至少有一個完全空行。多個空行會合併,所以留多一點空行也沒問題。
- 選擇單一換行的處理方式並執行轉換。若希望單一換行仍然可見(例如地址或歌詞),請選擇 br 模式。若來源只是被文字編輯器自動換行,應讀成一行散文,請選擇空格模式。接著執行轉換。
- 檢視原始碼並複製片段。結果會以跳脫過的 HTML 原始碼形式呈現。請以文字方式讀取,而不是當作已渲染的輸出,再把片段複製到 CMS、電子郵件模板、程式碼編輯器或 fixture 檔的 HTML 文字內容位置。
發佈後,請檢查實際頁面的標題結構、間距、連結、無障礙樹和 CSS。語法正確的段落並不代表周圍的文件設計良好,轉換器只處理你交給它的片段。
HTML 文字內容的跳脫規則
HTML 中保留了三個字元,必須在放入文字內容前替換成實體。這些跳脫規則的速查表很短:
| 字元 | 實體 | 為何必須跳脫 |
|---|---|---|
| & | & | 每個 HTML 實體參照的開頭,例如 © |
| < | < | 每個 HTML 標籤的開頭,例如 p、br、a |
| > | > | 每個 HTML 標籤的結尾,例如 p、br、a |
轉換器只會套用上述這三個跳脫,然後停止。雙引號和單引號在 HTML 文字內容中不需要跳脫,因為它們並非放在屬性內。將它們保留為原字元,可以避免實體雜訊讓片段變得臃腫、在 CMS 原始碼檢視中更難閱讀。WHATWG 的 p 元素參考資料確認,p 內容屬於 phrasing content,視為一般文字,只需要以上三個跳脫。
如果你的來源已經包含可信賴的 HTML 標記,跳脫會把所有標籤變成可見的文字。轉換器不是解析器,會把角括號視為資料。請改用專為該格式設計的解析器,或在轉換後手動將需要的地方取消跳脫。如果你想清理來源不明的 HTML,比起套用可能漏掉畸形結構的臨時正則表達式,進行跳脫會比較安全。
單一換行:br 標籤或空格
段落區塊內的單一換行有兩種合理的解釋,該選哪一種取決於在來源中那個換行的意義:
- br 模式適合每個換行都承載意義的情境。郵寄地址、詩詞、歌詞、署名區塊和程式碼片段,常常依賴強制換行,在窄螢幕寬度下才能保持可讀性。在此模式下,行的順序會以明確的 br 元素保留,後面接著來源的換行字元,讓片段在程式碼編輯器中仍易於瀏覽。
- 空格模式適合來源只是被文字編輯器自動換行,或從郵件客戶端貼上的情況。原作者並不打算讓任何換行可見;用單一普通空格把行接起來,就能重現預期的散文,避免多餘的人工垂直節奏。
如果猶豫不決,br 模式是較安全的預設值,因為它絕不會遺失資訊。原本是強制換行的行就會維持強制換行,唯一的代價只是片段稍微長一些。只有在確認來源中沒有任何承載意義的換行時,才該選擇空格模式。
段落轉換快速參考
下表把轉換規則濃縮成單一速查檢視。可以用它預測輸出,不必實際跑轉換器:
| 輸入形狀 | br 模式輸出 | 空格模式輸出 |
|---|---|---|
| 兩個非空行,以空行分隔 | 兩個 p 元素 | 兩個 p 元素 |
| 段落之間有多個連續空行 | 兩個 p 元素(空行會合併) | 兩個 p 元素(空行會合併) |
| 兩個非空行,中間沒有空行 | 一個 p 元素,內含一個 br | 一個 p 元素,以一個空格串接兩行 |
| 三個以上非空行,中間沒有空行 | 一個 p 元素,每對相鄰行之間有 br | 一個 p 元素,每對相鄰行之間以空格串接 |
| 輸入含有 &、< 或 > | 在 p 內容中使用實體 &、<、> | 在 p 內容中使用實體 &、<、> |
| 輸入使用 CRLF 或 CR 行尾 | 經標準化後與 LF 輸入的輸出相同 | 經標準化後與 LF 輸入的輸出相同 |
| 輸入頭尾有空白 | 在分組前先移除 | 在分組前先移除 |
需要注意的限制與陷阱
目前分頁中,片段上限為 500,000 字元。超過這個大小的輸入會超出轉換器的工作限制,必須先分割再貼上。若需要反覆處理許多較小的來源,瀏覽器端批次轉換流程文件說明了一套不經伺服器、可重複使用的本地管線。
這個轉換器並非 Markdown 解析器、RTF 編輯器、HTML 清理器或文件匯入工具。標題、清單、強調標記、連結、表格、縮排、Tab 鍵和引文區塊都會被視為文字。如果你的來源含有這些結構,跳脫會把它們變成可見字元,你應該改用具備該格式理解的解析器。
複製出來的片段只有在文件所述的轉換下、用於 HTML 文字內容位置才是安全的。把它放進屬性、JavaScript 字串、CSS 規則、URL 或模板語言中時,需要套用該目標位置對應的跳脫規則。這裡套用的 HTML 跳脫並無法防範透過上述其他管道的注入,而且轉換器絕不會把輸出預覽成可執行的 DOM。輸出在工具內仍維持可見文字,這能在你工作時,避免它自己的頁面執行貼上的腳本或事件處理器。
轉換與剪貼簿存取都在本地進行;來源和輸出都不會上傳。即使轉換器接受大型片段,它仍可能不適合塞進 CMS 欄位或應用程式套件,有意義的內容通常更適合放在結構化欄位中。在替換已發佈的內容之前,請先測試下游的大小、編碼與驗證限制。