Esta guía para comenzar con Zend_Markup utiliza el analizador BBCode
y el renderizador HTML. Los principios tratados pueden adaptarse a otros
analizadores y renderizadores.
Ejemplo 46.1. Uso básico de Zend_Markup
Primero instanciaremos un objeto Zend_Markup_Renderer_Html
utilizando el método Zend_Markup::factory(). Esto también creará
un objeto Zend_Markup_Parser_Bbcode que se añadirá al
objeto renderizador.
Después de eso, utilizaremos el método render() para convertir un fragmento
de BBCode a HTML.
// Creates instance of Zend_Markup_Renderer_Html,
// with Zend_Markup_Parser_BbCode as its parser
$bbcode = Zend_Markup::factory('Bbcode');
echo $bbcode->render('[b]bold text[/b] and [i]cursive text[/i]');
// Outputs: '<strong>bold text</strong> and <em>cursive text</em>'
Ejemplo 46.2. Un ejemplo más complicado de Zend_Markup
Esta vez, haremos exactamente lo mismo que arriba, pero con un marcado BBCode más complicado.
$bbcode = Zend_Markup::factory('Bbcode');
$input = <<<EOT
[list]
[*]Zend Framework
[*]Foobar
[/list]
EOT;
echo $bbcode->render($input);
/*
Should output something like:
<ul>
<li>Zend Framework</li>
<li>Foobar</li>
</ul>
*/
Ejemplo 46.3. Procesamiento de entradas incorrectas
Además de simplemente analizar y renderizar marcado como BBCode,
Zend_Markup también es capaz de manejar entradas incorrectas. La mayoría de los procesadores de BBCode
no son capaces de renderizar toda la entrada como salida XHTML válida.
Zend_Markup corrige entradas anidadas incorrectamente, y también
cierra etiquetas que no se cerraron:
$bbcode = Zend_Markup::factory('Bbcode');
echo $bbcode->render('some [i]wrong [b]sample [/i] text');
// Note that the '[b]' tag is never closed, and is also incorrectly
// nested; regardless, Zend_Markup renders it correctly as:
// some <em>wrong <strong>sample </strong></em><strong> text</strong>