league/commonmark是由 Colin O'Dell 創建的高度可擴展的 PHP Markdown 解析器,它支援完整的 CommonMark 規範和 GitHub 風格的 Markdown。 它是基於 John MacFarlane (@jgm) 的 CommonMark JS 參考實作。
該專案需要 PHP 7.4 或更高版本以及mbstring
擴充。 要透過 Composer 安裝它,只需運行:
$ 作曲家需要聯盟/共同馬克
CommonMarkConverter
類別提供了一個簡單的包裝器,將 CommonMark 轉換為 HTML:
使用 LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Hello World!</h1>
或者,如果您想要 GitHub 風格的 Markdown,請改用GithubFlavoredMarkdownConverter
類別:
使用 LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Hello World!</h1>
請注意,僅支援 UTF-8 和 ASCII 編碼。 如果您的 Markdown 使用不同的編碼,請在透過此程式庫運行之前將其轉換為 UTF-8。
警告
如果您要解析來自使用者的不受信任的輸入,請考慮根據上面的範例設定html_input
和allow_unsafe_links
選項。請參閱 https://commonmark.thephpleague.com/security/ 以了解更多詳細資訊。如果您也選擇允許不受信任的使用者輸入原始 HTML,請考慮使用程式庫(如 HTML Purifier)來提供額外的 HTML 過濾。
有關高級使用、配置和自訂的完整文件可以在 commonmark.thephpleague.com 上找到。
有關如何升級到該庫的較新版本的信息,請訪問 https://commonmark.thephpleague.com/releases。
前面顯示的GithubFlavoredMarkdownConverter
是CommonMarkConverter
的直接替代品,它加入了 GFM 規格中的附加功能:
自動連結
不允許的原始 HTML
刪除線
表格
任務清單
請參閱擴展文檔,以了解有關如何僅包含某些 GFM 功能(如果您不需要全部功能)的更多詳細資訊。
蛋糕PHP 3
德魯帕爾
拉拉維爾 4+
杜父魚
交響樂 2 和 3
交響樂4
Twig Markdown 擴展
樹枝過濾器和標籤
Laravel CommonMark 博客
請參閱我們的擴充文檔,以了解與該庫捆綁的擴充功能的完整清單。
自訂解析器/渲染器可以捆綁到擴充 CommonMark 的擴充功能中。 以下是一些您可能會感興趣的內容:
Emoji 擴充 - 帶有 Github 標籤的 UTF-8 emoji 擴充。
Sup Sub 擴充功能 - 新增對上標和下標( <sup>
和<sub>
HTML 標記)的支持
YouTube iframe 擴充 - 用 iframe 取代 YouTube 連結。
延遲圖像擴展 - 新增延遲載入圖像的各種選項。
標記擴充 - 新增對突出顯示文字( <mark>
HTML 標記)的支持
其他可以在 Packagist 上的commonmark-extension
包類型下找到。
如果您自己構建,請隨時提交 PR 將其添加到此列表中!
看看人們使用league/commonmark
所做的其他很酷的事情:https://packagist.org/packages/league/commonmark/dependents
SemVer 受到密切關注。次要版本和補丁版本不應對程式碼庫引入重大變更;但是,它們可能會更改解析後的Markdown 的AST 或HTML 輸出(由於錯誤修復、規範更改等)。正常運轉。
任何標記為@internal
類別或方法都不適合在該庫之外使用,並且隨時可能發生重大更改,因此請避免使用它們。
當新的次要版本(例如2.0
-> 2.1
)發佈時,前一個版本( 2.0
)將繼續接收安全性和關鍵錯誤修復至少3 個月。
當發布新的主要版本(例如1.6
-> 2.0
)時,前一個版本( 1.6
)將在新版本發布後至少3 個月內收到關鍵錯誤修復,並在 6 個月內收到安全更新。
(此政策將來可能會發生變化,並且可能會根據具體情況制定例外情況。)
透過 Tidelift 訂閱可以獲得專業支持,包括新版本和安全性更新的通知。
若要報告安全漏洞,請使用 Tidelift 安全聯絡人。 Tidelift 將與我們協調修復和揭露。
如果您在規範中遇到錯誤,請將其報告給 CommonMark 專案。 任何由此產生的修復最終也將在該專案中實施。
歡迎對該庫做出貢獻,尤其是:
提高可用性或彈性,同時不影響我們遵守 CommonMark 規範的能力
對參考實作進行鏡像修復
優化效能
修復遵守 CommonMark 規範的問題
如果可能的話,應避免對核心解析邏輯進行重大重構,以便我們可以輕鬆追蹤對參考實作的更新。話雖這麼說,我們絕對會考慮不會偏離參考規範太遠或受到其他流行 CommonMark 實現青睞的更改。
請參閱貢獻以獲取更多詳細資訊。
$ 作曲家測試
這也將根據最新支援的規範測試 league/commonmark。
您可以透過執行隨附的基準測試工具將league/commonmark的效能與其他流行的解析器進行比較:
$ ./tests/benchmark/benchmark.php
該程式碼最初基於 CommonMark JS 參考實現,該實現由 John MacFarlane 編寫、維護並擁有版權。 如果沒有他的工作,這個專案根本就不會存在。
非常感謝我們所有出色的貢獻者:
我們也要向支持此計畫持續發展的以下贊助商致以誠摯的謝意:
Tidelift 透過其專業支援計畫為維修人員和最終用戶提供支持
Blackfire 用於提供 Open-Source Profiler 訂閱
JetBrains 透過免費的 PhpStorm 許可證支持該項目
您有興趣贊助該專案的開發嗎?請參閱 https://www.colinodell.com/sponsor 以了解貢獻方式清單。
league/commonmark根據 BSD-3 許可證獲得許可。 有關更多詳細信息,請參閱LICENSE
文件。
該項目主要由 Colin O'Dell 維護。 PHP 聯盟領導團隊的成員有時可能會協助履行其中一些職責。
此專案被 Drupal、Laravel Framework、Cachet、Firefly III、Neos、Daux.io 等使用!
透過 Tidelift 訂閱獲得聯盟/commonmark 的專業支持
Tidelift 協助維修人員實現開源的永續發展,同時為公司提供支援
有關其依賴項的安全性、維護和許可的保證。