league/commonmark ist ein hoch erweiterbarer PHP-Markdown-Parser von Colin O'Dell, der die vollständige CommonMark-Spezifikation und GitHub-Flavored Markdown unterstützt. Es basiert auf der CommonMark JS-Referenzimplementierung von John MacFarlane (@jgm).
Für dieses Projekt ist PHP 7.4 oder höher mit der Erweiterung mbstring
erforderlich. Um es über Composer zu installieren, führen Sie einfach Folgendes aus:
$ Composer benötigt Liga/Commonmark
Die CommonMarkConverter
-Klasse bietet einen einfachen Wrapper zum Konvertieren von CommonMark in HTML:
use LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hallo Welt!');// <h1>Hallo Welt!</h1>
Oder wenn Sie GitHub-Flavored Markdown wünschen, verwenden Sie stattdessen die Klasse GithubFlavoredMarkdownConverter
:
use LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hallo Welt!');// <h1>Hallo Welt!</h1>
Bitte beachten Sie, dass nur UTF-8- und ASCII-Kodierungen unterstützt werden. Wenn Ihr Markdown eine andere Kodierung verwendet, konvertieren Sie ihn bitte in UTF-8, bevor Sie ihn über diese Bibliothek ausführen.
Vorsicht
Wenn Sie nicht vertrauenswürdige Eingaben von Benutzern analysieren, sollten Sie erwägen, die Optionen html_input
und allow_unsafe_links
gemäß dem obigen Beispiel festzulegen. Weitere Informationen finden Sie unter https://commonmark.thephpleague.com/security/. Wenn Sie auch Roh-HTML-Eingaben von nicht vertrauenswürdigen Benutzern zulassen möchten, sollten Sie die Verwendung einer Bibliothek (wie HTML Purifier) in Betracht ziehen, um zusätzliche HTML-Filterung bereitzustellen.
Eine vollständige Dokumentation zur erweiterten Nutzung, Konfiguration und Anpassung finden Sie unter commonmark.thephpleague.com.
Informationen zum Upgrade auf neuere Versionen dieser Bibliothek finden Sie unter https://commonmark.thephpleague.com/releases.
Der zuvor gezeigte GithubFlavoredMarkdownConverter
ist ein direkter Ersatz für den CommonMarkConverter
, der zusätzliche Funktionen aus der GFM-Spezifikation hinzufügt:
Autolinks
Unzulässiges Roh-HTML
Durchgestrichen
Tische
Aufgabenlisten
Weitere Informationen dazu, wie Sie nur bestimmte GFM-Funktionen einbinden, wenn Sie nicht alle möchten, finden Sie in der Dokumentation zu Erweiterungen.
CakePHP 3
Drupal
Laravel 4+
Sculpin
Symfony 2 & 3
Symfony 4
Twig Markdown-Erweiterung
Zweigfilter und Tag
Laravel CommonMark-Blog
Eine vollständige Liste der mit dieser Bibliothek gebündelten Erweiterungen finden Sie in unserer Erweiterungsdokumentation.
Benutzerdefinierte Parser/Renderer können in Erweiterungen gebündelt werden, die CommonMark erweitern. Hier sind einige, die Sie vielleicht interessant finden:
Emoji-Erweiterung – UTF-8-Emoji-Erweiterung mit Github-Tag.
Sup Sub-Erweiterungen – Fügt Unterstützung für hochgestellte und tiefgestellte Zeichen (HTML-Tags <sup>
und <sub>
) hinzu.
YouTube-Iframe-Erweiterung – Ersetzt den YouTube-Link durch Iframe.
Lazy Image-Erweiterung – Fügt verschiedene Optionen für das verzögerte Laden von Bildern hinzu.
Markierungserweiterung – Fügt Unterstützung für hervorgehobenen Text hinzu ( <mark>
HTML-Tag)
Andere finden Sie auf Packagist unter dem Pakettyp commonmark-extension
.
Wenn Sie Ihr eigenes bauen, können Sie gerne eine PR einreichen, um es dieser Liste hinzuzufügen!
Schauen Sie sich die anderen coolen Dinge an, die Leute mit league/commonmark
machen: https://packagist.org/packages/league/commonmark/dependents
SemVer wird genau verfolgt. Minor- und Patch-Releases sollten keine Breaking Changes an der Codebasis mit sich bringen; Sie können jedoch die resultierende AST- oder HTML-Ausgabe des geparsten Markdowns ändern (aufgrund von Fehlerbehebungen, Spezifikationsänderungen usw.). Infolgedessen erhalten Sie möglicherweise etwas anderes HTML, aber jeder auf dieser Bibliothek basierende benutzerdefinierte Code sollte weiterhin ordnungsgemäß funktionieren.
Alle mit @internal
gekennzeichneten Klassen oder Methoden sind nicht für die Verwendung außerhalb dieser Bibliothek vorgesehen und unterliegen jederzeit wichtigen Änderungen. Vermeiden Sie daher bitte deren Verwendung.
Wenn eine neue Nebenversion (z. B. 2.0
-> 2.1
) veröffentlicht wird, erhält die vorherige Version ( 2.0
) mindestens 3 Monate lang weiterhin Sicherheit und wichtige Fehlerbehebungen.
Wenn eine neue Hauptversion veröffentlicht wird (z. B. 1.6
-> 2.0
), erhält die vorherige Version ( 1.6
) nach Veröffentlichung dieser neuen Version mindestens 3 Monate lang kritische Fehlerbehebungen und 6 Monate lang Sicherheitsupdates.
(Diese Richtlinie kann sich in Zukunft ändern und es können von Fall zu Fall Ausnahmen gemacht werden.)
Professioneller Support, einschließlich Benachrichtigungen über neue Versionen und Sicherheitsupdates, ist über ein Tidelift-Abonnement verfügbar.
Um eine Sicherheitslücke zu melden, wenden Sie sich bitte an den Sicherheitskontakt von Tidelift. Tidelift wird die Behebung und Offenlegung mit uns koordinieren.
Wenn Sie auf einen Fehler in der Spezifikation stoßen, melden Sie ihn bitte dem CommonMark-Projekt. Alle daraus resultierenden Korrekturen werden schließlich auch in diesem Projekt implementiert.
Beiträge zu dieser Bibliothek sind willkommen , insbesondere solche, die:
Verbessern Sie die Benutzerfreundlichkeit oder Flexibilität, ohne unsere Fähigkeit zu beeinträchtigen, die CommonMark-Spezifikation einzuhalten
Spiegelkorrekturen an der Referenzimplementierung
Leistung optimieren
Beheben Sie Probleme bei der Einhaltung der CommonMark-Spezifikation
Eine umfassende Umgestaltung der Kern-Parsing-Logik sollte nach Möglichkeit vermieden werden, damit wir Aktualisierungen der Referenzimplementierung problemlos verfolgen können. Allerdings werden wir auf jeden Fall Änderungen in Betracht ziehen, die nicht zu weit von der Referenzspezifikation abweichen oder die von anderen beliebten CommonMark-Implementierungen bevorzugt werden.
Weitere Einzelheiten finden Sie unter BEITRAGEN.
$ Composer-Test
Dadurch wird auch League/Commonmark mit der neuesten unterstützten Spezifikation verglichen.
Sie können die Leistung von league/commonmark mit anderen gängigen Parsern vergleichen, indem Sie das mitgelieferte Benchmark-Tool ausführen:
$ ./tests/benchmark/benchmark.php
Dieser Code basierte ursprünglich auf der CommonMark JS-Referenzimplementierung, die von John MacFarlane geschrieben, gepflegt und urheberrechtlich geschützt wurde. Ohne seine Arbeit gäbe es dieses Projekt einfach nicht.
Und ein großes Dankeschön an alle unsere großartigen Mitwirkenden:
Wir möchten uns auch ganz herzlich bei den folgenden Sponsoren bedanken, die die Weiterentwicklung dieses Projekts unterstützen:
Tidelift für die Unterstützung sowohl der Betreuer als auch der Endbenutzer durch sein professionelles Supportprogramm
Blackfire für die Bereitstellung eines Open-Source-Profiler-Abonnements
JetBrains für die Unterstützung dieses Projekts mit kostenlosen PhpStorm-Lizenzen
Sind Sie daran interessiert, die Entwicklung dieses Projekts zu unterstützen? Unter https://www.colinodell.com/sponsor finden Sie eine Liste mit Möglichkeiten, einen Beitrag zu leisten.
league/commonmark ist unter der BSD-3-Lizenz lizenziert. Weitere Einzelheiten finden Sie in der LICENSE
-Datei.
Dieses Projekt wird hauptsächlich von Colin O'Dell betreut. Mitglieder des PHP League-Führungsteams können gelegentlich bei einigen dieser Aufgaben behilflich sein.
Dieses Projekt wird von Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io und mehr verwendet!
Erhalten Sie mit einem Tidelift-Abonnement professionellen Support für Liga/Commonmark
Tidelift trägt dazu bei, Open Source für Betreuer nachhaltig zu machen und gleichzeitig Unternehmen zu unterstützen
Zusicherungen hinsichtlich Sicherheit, Wartung und Lizenzierung für ihre Abhängigkeiten.