Aprende a convertir Markdown a HTML fácilmente en un proyecto Symfony 3 con 2 de los analizadores de Markdown más famosos.

Cómo convertir Markdown a HTML en Symfony 3

Markdown es una herramienta de conversión de texto a HTML para escritores web. Markdown le permite escribir usando un formato de texto plano fácil de leer y escribir, y luego convertirlo a XHTML (o HTML) estructuralmente válido.

Hay muchas ventajas si trabaja con Markdown. Es muy flexible, puede generar sus documentos en una amplia gama de formatos. Se puede utilizar para publicar en la web (una vez convertido en HTML), texto enriquecido para enviar correos electrónicos o importar a un programa de diseño. Además, Markdown es muy rápido y no solo desde el punto de vista técnico, porque el formato simple ahorra una cantidad significativa de tiempo en comparación con las etiquetas HTML hechas a mano y, a menudo, es más rápido que usar un procesador de texto o un editor WYSIWYG. Además, un archivo de rebajas (o solo contenido) tiende a ser más liviano que un archivo HTML (lo cual es útil para el almacenamiento de la base de datos en su proyecto si hablamos a gran escala).

En este artículo aprenderás cómo convertir Markdown a HTML en tu proyecto Symfony 3 utilizando cualquiera de las 2 bibliotecas de analizadores de Markdown más famosas para PHP, Parsedown o PHP Markdown .

A.  Usando Parsedown

La biblioteca Parsedown afirma ser un mejor analizador de Markdown en PHP (al menos mejor que los otros analizadores disponibles para Markdown escritos en PHP). Esta biblioteca es conocida porque es Github Flavored . Eso significa que puede procesar la rebaja especial de Github (como tablas, resaltado de código, etc.).

¿Por qué Parsedown?

Intenta leer Markdown como un humano. Primero, mira las líneas. Está interesado en cómo comienzan las filas. Esto le ayuda a reconocer los bloques. Sabe, por ejemplo, que si una línea comienza con un - (guion), quizás pertenezca a una lista. Una vez que reconoce los bloques, continúa con el contenido. Mientras lee, busca caracteres especiales. Esto le ayuda a reconocer elementos en línea (o en línea).

El autor llama a este enfoque "basado en líneas". Él cree que Parsedown es el primer analizador de Markdown que lo usa. Desde el lanzamiento de Parsedown, otros desarrolladores han utilizado el mismo enfoque para desarrollar otros analizadores Markdown en PHP y en otros lenguajes. Pasa la mayoría de las pruebas CommonMark. La mayoría de las pruebas que no pasan tratan casos que son bastante infrecuentes. Aún así, a medida que CommonMark madura, el cumplimiento debería mejorar.

Instalación

Instala el paquete ejecutando el siguiente comando en tu terminal (mientras estás ubicado en el directorio de tu proyecto):

composer require erusev/parsedown

Si necesita más información sobre el paquete, visite el repositorio oficial de Github aquí .

Uso

Para usar Parsedown en su proyecto, importe la clase Parsedown usando una declaración de uso en la parte superior de su controlador:

use Parsedown;

Luego crea una nueva instancia de la clase en una variable y usa el método de texto para convertir tu rebaja en HTML:

$Parsedown = new Parsedown();
$html = $Parsedown->text("# Hello World");

Ejemplo

El siguiente controlador devuelve el HTML generado por algún ejemplo de reducción como respuesta:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Importar Parsedown en el controlador
 */
use Parsedown; 

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {   
        // Crea una nueva instancia de parsedown
        $Parsedown = new Parsedown();

        // Algún marcado para analizar (puede ser el contenido de un archivo o una cadena simple)
        $markdownToParse = <<<EOF
# About Artyom

Artyom.js is a robust and useful wrapper of the webkitSpeechRecognition and speechSynthesis APIs. Besides, artyom allows you to add dynamic commands to your web app (website).

### Speech Recognition

- Quick recognition of voice commands.
- Pause and resume command recognition.
- Artyom has available the soundex algorithm to increase the accuracy of the recognition of commands (disabled by default).
- Works both in desktop browser and mobile device.

### Voice Synthesis

- Synthesize extreme huge blocks of text (+20K words according to the last test).
- onStart and onEnd callbacks **will be always executed independently of the text length**.
- Works both in desktop browser and mobile device.

Read [the changelog to be informed about changes and additions in Artyom.js](http://docs.ourcodeworld.com/projects/artyom-js/documentation/getting-started/official-changelog)


Artyom provides **complete** support for the following languages. Every language needs an initialization code that needs to be provided in the lang property at the initialization.

| |Description |Code for initialization|
------------- | ------------- | ------------- |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-usa.png" alt="Supported language"/>| English (USA)<br/>English (Great Britain) Great Britain| en-US<br/>en-GB |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-spanish.png" alt="Supported language"/>| Español | es-ES |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-german.png" alt="Supported language"/>| Deutsch | de-DE |
| <img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-italy.png" alt="Supported language"/> | Italiano |it-IT |
EOF;

        return new Response($Parsedown->text($markdownToParse));
    }
}

La respuesta del controlador anterior se verá así:

Parsedown HTML example PHP Symfony

B. Uso de PHP Markdown

La API pública de PHP Markdown consta de las dos clases de analizador Markdown y MarkdownExtra, sus constructores, las funciones transform y defaultTransform y sus variables de configuración. La biblioteca PHP Markdown fue escrita por Michel Fortin  y está basada en el proyecto oficial Markdown escrito por John Gruber .

Por qué PHP Markdown

"Markdown" es en realidad dos cosas: una sintaxis de marcado de texto sin formato y una herramienta de software, originalmente escrita en Perl , que convierte el marcado de texto sin formato a HTML. PHP Markdown es un puerto a PHP del programa Markdown original de John Gruber.

Este paquete de biblioteca requiere PHP 5.3 o posterior.

Instalación

Instala el paquete ejecutando el siguiente comando en tu terminal (mientras estás ubicado en el directorio de tu proyecto):

composer require michelf/php-markdown

Si necesita más información sobre el paquete, visite el repositorio oficial de Github aquí .

Uso

Para usar PHP Markdown en su proyecto, importe la clase principal usando una declaración de uso en la parte superior de su controlador:

use Michelf\Markdown;

Con PHP Markdown no necesita crear una nueva instancia de la clase en una variable ya que puede usar métodos estáticos. Para convertir markdown a html, use el método estático ::defaultTransform:

$html = Markdown::defaultTransform("# Hello World");

Ejemplo

El siguiente controlador devuelve el HTML generado por algún ejemplo de reducción como respuesta:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Importar la clase de rebajas
 */
use Michelf\Markdown;

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        $markdownToParse = <<<EOF
# About Artyom

Artyom.js is a robust and useful wrapper of the webkitSpeechRecognition and speechSynthesis APIs. Besides, artyom allows you to add dynamic commands to your web app (website).

### Speech Recognition

- Quick recognition of voice commands.
- Pause and resume command recognition.
- Artyom has available the soundex algorithm to increase the accuracy of the recognition of commands (disabled by default).
- Works both in desktop browser and mobile device.

### Voice Synthesis

- Synthesize extreme huge blocks of text (+20K words according to the last test).
- onStart and onEnd callbacks **will be always executed independently of the text length**.
- Works both in desktop browser and mobile device.

Read [the changelog to be informed about changes and additions in Artyom.js](http://docs.ourcodeworld.com/projects/artyom-js/documentation/getting-started/official-changelog)


Artyom provides **complete** support for the following languages. Every language needs an initialization code that needs to be provided in the lang property at the initialization.

| |Description |Code for initialization|
------------- | ------------- | ------------- |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-usa.png" alt="Supported language"/>| English (USA)<br/>English (Great Britain) Great Britain| en-US<br/>en-GB |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-spanish.png" alt="Supported language"/>| Español | es-ES |
|<img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-german.png" alt="Supported language"/>| Deutsch | de-DE |
| <img src="https://raw.githubusercontent.com/sdkcarlos/sdkcarlos.github.io/master/sites/artyom-resources/images/flag-italy.png" alt="Supported language"/> | Italiano |it-IT |
EOF;
       
        return new Response(Markdown::defaultTransform($markdownToParse));
    }
}

La respuesta del siguiente controlador se verá así:

PHP Markdown PHP example

Como puede ver, las tablas de rebajas típicas que usa en Github no se representan correctamente. Eso es simplemente porque la documentación oficial de Markdown establece que Markdown no proporciona ninguna sintaxis especial para las tablas. En su lugar, utiliza <table>sintaxis HTML . Pero existen extensiones de sintaxis de Markdown que proporcionan sintaxis adicional para crear tablas simples.

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores