League/commonmark 는 전체 CommonMark 사양과 GitHub 기반 Markdown을 지원하는 Colin O'Dell이 만든 확장성이 뛰어난 PHP Markdown 파서입니다. 이는 John MacFarlane(@jgm)의 CommonMark JS 참조 구현을 기반으로 합니다.
이 프로젝트에는 mbstring
확장이 포함된 PHP 7.4 이상이 필요합니다. 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
는 GFM 사양에 있는 추가 기능을 추가하는 CommonMarkConverter
의 드롭인 대체품입니다.
자동링크
허용되지 않는 원시 HTML
취소선
테이블
작업 목록
모든 기능을 원하지 않는 경우 특정 GFM 기능만 포함하는 방법에 대한 자세한 내용은 확장 문서를 참조하세요.
케이크PHP 3
드루팔
라라벨 4+
스컬핀
심포니 2 & 3
심포니 4
나뭇가지 마크다운 확장
나뭇가지 필터 및 태그
라라벨 CommonMark 블로그
이 라이브러리와 함께 번들로 제공되는 확장의 전체 목록은 확장 문서를 참조하세요.
사용자 정의 파서/렌더러는 CommonMark를 확장하는 확장 프로그램에 번들로 포함될 수 있습니다. 다음은 흥미로울 수 있는 몇 가지 사항입니다.
이모티콘 확장 - Github 태그가 포함된 UTF-8 이모티콘 확장입니다.
Sup 하위 확장 - 위 첨자 및 아래 첨자( <sup>
및 <sub>
HTML 태그) 지원을 추가합니다.
YouTube iframe 확장 - YouTube 링크를 iframe으로 대체합니다.
Lazy Image 확장 - 이미지의 지연 로딩을 위한 다양한 옵션을 추가합니다.
마커 확장 - 강조 표시된 텍스트 지원 추가( <mark>
HTML 태그)
다른 것들은 Packagist의 commonmark-extension
패키지 유형 아래에서 찾을 수 있습니다.
직접 제작한 경우 자유롭게 PR을 제출하여 이 목록에 추가하세요!
사람들이 league/commonmark
로 하고 있는 다른 멋진 일들을 확인해 보세요: https://packagist.org/packages/league/commonmark/dependents
SemVer는 밀접하게 따르고 있습니다. 마이너 및 패치 릴리스는 코드베이스에 주요 변경 사항을 도입해서는 안 됩니다. 그러나 구문 분석된 Markdown의 결과 AST 또는 HTML 출력이 변경될 수 있습니다(버그 수정, 사양 변경 등으로 인해). 결과적으로 HTML이 약간 다를 수 있지만 이 라이브러리에 구축된 사용자 정의 코드는 여전히 올바르게 작동해야 합니다.
@internal
로 표시된 클래스나 메서드는 이 라이브러리 외부에서 사용하기 위한 것이 아니며 언제든지 주요 변경 사항이 적용될 수 있으므로 사용하지 마십시오.
새로운 부 버전(예: 2.0
-> 2.1
)이 출시되면 이전 버전( 2.0
)은 최소 3개월 동안 계속해서 보안 및 중요한 버그 수정을 받게 됩니다.
새로운 주요 버전이 출시되면(예: 1.6
-> 2.0
) 이전 버전( 1.6
)은 새 릴리스가 출시된 후 최소 3개월 동안 중요한 버그 수정을 받고 6개월 동안 보안 업데이트를 받게 됩니다.
(본 정책은 추후 변경될 수 있으며, 경우에 따라 예외가 적용될 수 있습니다.)
새로운 릴리스 및 보안 업데이트 알림을 포함한 전문적인 지원은 Tidelift 구독을 통해 제공됩니다.
보안 취약점을 신고하려면 Tidelift 보안 담당자에게 문의하세요. Tidelift는 우리와 함께 수정 및 공개를 조정할 것입니다.
사양에 버그가 있는 경우 CommonMark 프로젝트에 보고해 주세요. 최종 수정 사항은 결국 이 프로젝트에도 구현될 것입니다.
이 라이브러리에 대한 기여는 환영합니다 . 특히 다음과 같은 기여는 더욱 그렇습니다.
CommonMark 사양을 준수하는 능력을 저하시키지 않으면서 유용성이나 유연성을 향상시킵니다.
참조 구현에 대한 미러 수정 사항
성능 최적화
CommonMark 사양 준수 문제 해결
참조 구현에 대한 업데이트를 쉽게 따를 수 있도록 가능하면 핵심 구문 분석 논리에 대한 대규모 리팩토링을 피해야 합니다. 즉, 우리는 참조 사양에서 크게 벗어나지 않거나 다른 널리 사용되는 CommonMark 구현에서 선호하는 변경 사항을 절대적으로 고려할 것입니다.
자세한 내용은 CONTRIBUTING을 참조하세요.
$ 작곡가 테스트
또한 최신 지원 사양에 대해 리그/공통 마크를 테스트합니다.
포함된 벤치마크 도구를 실행하여 League/Commonmark 의 성능을 다른 널리 사용되는 파서와 비교할 수 있습니다.
$ ./tests/benchmark/benchmark.php
이 코드는 원래 John MacFarlane이 작성, 유지 관리 및 저작권을 보유한 CommonMark JS 참조 구현을 기반으로 했습니다. 이 프로젝트는 그의 작업이 없었다면 존재하지 않았을 것입니다.
그리고 우리의 놀라운 기여자들 모두에게 큰 감사를 드립니다:
또한 이 프로젝트의 지속적인 개발을 지원하는 다음 스폰서들에게도 진심으로 감사드립니다.
전문 지원 프로그램을 통해 관리자와 최종 사용자 모두에게 지원을 제공하는 Tidelift
오픈 소스 프로파일러 구독을 제공한 Blackfire
무료 PhpStorm 라이선스로 이 프로젝트를 지원하는 JetBrains
이 프로젝트의 개발을 후원하는 데 관심이 있으십니까? 기여 방법 목록은 https://www.colinodell.com/sponsor를 참조하세요.
League/Commonmark 는 BSD-3 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE
파일을 참조하세요.
이 프로젝트는 주로 Colin O'Dell이 관리합니다. PHP 리그 리더십 팀의 구성원은 때때로 이러한 임무 중 일부를 지원할 수 있습니다.
이 프로젝트는 Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io 등에서 사용됩니다!
Tidelift 구독으로 리그/공통 마크에 대한 전문적인 지원을 받으세요
Tidelift는 유지 관리 담당자가 오픈 소스를 지속 가능하게 만드는 동시에 회사에
종속성에 대한 보안, 유지 관리 및 라이센스에 대한 보장.