Back-End

23 fev, 2018

Convertendo Markdown em HTML e HTML em Markdown com PHP

Publicidade

De acordo com o site oficial da linguagem de marcação Markdown, Markdown é uma ferramenta de conversão de texto para HTML para escritores web. O Markdown permite que você escreva usando um formato de plain text fácil de ler, fácil de escrever e, em seguida, converta-o para XHTML (ou HTML) estruturalmente válido.

Hoje em dia o Markdown é utilizado em várias plataformas de blog, no medium, e também é muito utilizada para a documentação de projetos no github. Devido a sua sintaxe mais fácil para quem não é desenvolvedor web. Muitos jornalistas, escritores e, obviamente programadores acabam preferindo utilizar o Markdown para escrever seus artigos e documentações.

Com a necessidade da portabilidade do projeto para várias linguagens. Existem algumas bibliotecas PHP que implementam a conversão de Markdown em HTML. Nesse artigo vamos falar sobre uma delas. A biblioteca do ThePHPLeague Commonmark. Para quem não conhece, o ThePHPLeague é um grupo de desenvolvedores PHP que cria vários projetos PHP testáveis. Alguns bem conhecidos como o omnipay, o fractal e o oauth2-client.

Usando uma sintaxe simples é possível converter um Markdown válido em HTML. Para isso, vamos usar o markdown de exemplo do https://markdown-it.github.io, você pode baixar esse markdown em https://gist.github.com/pokemaobr/32aeb11e6320a9c3c142588c780b39e7

Então, é só criarmos uma pasta para o projeto, colocar o arquivo markdownit.md na pasta e fazer o composer require da biblioteca

composer require league/commonmark

Após isso, basta criarmos um markdownToHtml.php

 

<?php

require_once 'vendor/autoload.php';

use League\CommonMark\CommonMarkConverter; //utilizando o conversor padrão do CommonMark

$converter = new CommonMarkConverter(); //instanciando um novo conversor

$markdown = file_get_contents('markdownit.md');

echo $converter->convertToHtml($markdown); //convertendo o markdown

E logo após vamos realizar um teste subindo o servidor nativo do PHP na porta 8888

php -s localhost:8888

Então basta abrirmos no nosso navegador o localhost:8888/markdownToHtml.php

Teremos então nosso markdown transformado em HTML.

Para a documentação oficial da biblioteca, você pode acessar o repositório oficial.

Como eu disse anteriormente várias bibliotecas PHP implementam a conversão Markdown->HTML, porém, poucas fazem o contrário. A vantagem é que o ThePHPLeague também disponibiliza uma biblioteca para converter de Markdown para HTML. Essa biblioteca é a HTML to Markdown

Vamos usar o mesmo exemplo. Só que com o html gerado pelo commonmark no exemplo anterior.

Para isso vamos salvar o HTML gerado com o script saveMarkdownToHtml.php :

<?php
require_once 'vendor/autoload.php';
use League\CommonMark\CommonMarkConverter; //utilizando o conversor padrão do CommonMark
$converter = new CommonMarkConverter(); //instanciando um novo conversor
$markdown = file_get_contents('markdownit.md');
file_put_contents('markdownit.html',$converter-&gt;convertToHtml($markdown)); //salvando o markdown convertido em html

Vamos usar o mesmo exemplo. Só que com o html gerado pelo commonmark no exemplo anterior.
Com ele salvo no nosso diretório vamos importar a biblioteca para nosso projeto

composer require league/html-to-markdown

E, de maneira similar criarmos o htmlToMarkdown.php

<?php
require_once 'vendor/autoload.php';
use League\HTMLToMarkdown\HtmlConverter; //utilizando o conversor padrão do  HTMLToMarkdown
$converter = new HtmlConverter(); //instanciando um novo conversor
$html = file_get_contents('markdownit.html');
echo $converter->convert($html);

Depois executamos o script

E teremos como resultado o Markdown de início.

Espero que tenham gostado dessa biblioteca e até a próxima.