layout: default title: CommonMark Core Extension
The CommonMarkCoreExtension class contains all of the core Markdown syntax - things like parsing headers, code blocks, links, image, etc.
This extension is bundled with league/commonmark. This library can be installed via Composer:
composer require league/commonmark
See the installation section for more details.
This extension is automatically included for you (behind-the-scenes) whenever you instantiate the parser using the CommonMarkConverter class:
use League\CommonMark\CommonMarkConverter;
$converter = new CommonMarkConverter();
echo $converter->convertToHtml('# Hello World!');
Or if you call the Environment::createCommonMarkEnvironment() helper:
use League\CommonMark\DocParser;
use League\CommonMark\Environment;
use League\CommonMark\HtmlRenderer;
$environment = Environment::createCommonMarkEnvironment();
$parser = new DocParser($environment);
$htmlRenderer = new HtmlRenderer($environment);
$markdown = '# Hello World!';
$document = $parser->parse($markdown);
echo $htmlRenderer->renderBlock($document);
If you ever create a new Environment() from scratch, you'll probably want to include the CommonMarkCoreExtension() so you get all the standard Markdown syntax included:
use League\CommonMark\DocParser;
use League\CommonMark\Environment;
use League\CommonMark\Extension\CommonMarkCoreExtension;
use League\CommonMark\HtmlRenderer;
$environment = new Environment();
$environment->addExtension(new CommonMarkCoreExtension());
$parser = new DocParser($environment);
$htmlRenderer = new HtmlRenderer($environment);
$markdown = '# Hello World!';
$document = $parser->parse($markdown);
echo $htmlRenderer->renderBlock($document);
Alternatively, if you don't want all of the core Markdown syntax, avoid using CommonMarkCoreExtension. You can always add just the individual parsers, renderers, etc. you actually want with the Environment. (This is actually how the Inlines Only Extension works - it only includes a subset of things that CommonMarkCoreExtension does!)