在開發一個內容管理系統時,我遇到了一個棘手的問題:用戶提交的文本中包含了大量的直引號、連字符和省略號。這些符號在最終的 html 輸出中顯得不夠美觀,影響了用戶體驗。為了解決這個問題,我嘗試了多種方法,最終發現了 michelf/php-smartypants 這個庫,它不僅解決了我的問題,還大大提升了文本的排版質量。
michelf/php-smartypants 是一個 PHP 庫,專門用于將普通的 ASCII 標點符號轉換為“智能”排版符號。它由 Michel Fortin 開發,是 John Gruber 的 SmartyPants 的 PHP 版本。這個庫可以執行以下轉換:
- 將直引號 (” 和 ‘) 轉換為“彎曲”引號 HTML 實體。
- 將反引號風格的引號 (“like this”) 轉換為“彎曲”引號 HTML 實體。
- 將連字符 (– 和 —) 轉換為 en 和 em 破折號實體。
- 將三個連續的點 (…) 轉換為省略號實體。
此外,michelf/php-smartypants 的 Typographer 版本還可以執行更多轉換:
- 將法語引號 (>) 轉換為真正的 ? 引號 ? HTML 實體。
- 將逗號風格的引號 (,,like this“` 或”like this,,`) 轉換為其彎曲等價物。
- 在標點符號周圍適當地替換現有空格為不間斷空格,也可以根據配置添加或刪除它們。
- 將數字和后面的單位符號之間的空格替換為不間斷空格(適用于大多數常見單位)。
使用這個庫,你可以使用普通的 ASCII 直引號、連字符和點來編寫、編輯和保存文本,但最終的 HTML 輸出將顯示為智能引號、em 破折號、正確的省略號和不間斷空格(使用 Typographer 版本)。
安裝 michelf/php-smartypants 非常簡單,只需使用 composer:
立即學習“PHP免費學習筆記(深入)”;
composer require michelf/php-smartypants
使用示例:
use MichelfSmartyPants; $html_output = SmartyPants::defaultTransform($html_input);
如果你需要使用 Typographer 版本,可以這樣做:
use MichelfSmartyPantsTypographer; $html_output = SmartyPantsTypographer::defaultTransform($html_input);
使用 michelf/php-smartypants 后,我的內容管理系統的文本排版得到了顯著提升,用戶體驗也得到了改善。這個庫不僅解決了我的排版問題,還提供了靈活的配置選項,使得我可以根據具體需求進行調整。
總結來說,michelf/php-smartypants 是一個強大的工具,能夠幫助你在 PHP 中輕松實現高質量的文本排版。它不僅易于安裝和使用,還提供了豐富的功能和配置選項,使得你的內容更加美觀和專業。如果你在處理文本排版方面遇到了類似的問題,不妨嘗試使用這個庫。