bbcode_set_arg_parser

(PECL bbcode >= 0.10.2)

bbcode_set_arg_parserAñade otro analizador para usar otro set de reglas para analizar argumentos

Descripción

bbcode_set_arg_parser ( resource $bbcode_container , resource $bbcode_arg_parser ) : bool

Añade otro analizador a bbcode_container. Este analizador se usa únicamente cuando se deben analizar argumentos. Si no se usa esta función, el analizador de argumentos por defectos es el propio analizador.

Parámetros

bbcode_container

Resource BBCode_Container, retornado por bbcode_create().

bbcode_arg_parser

Resource BBCode_Container, retornado por bbcode_create(). Se usará únicamente para analizar argumentos.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de uso de bbcode_set_arg_parser()

<?php
/*
 * Set de reglas bbcode para el analizador principal
 */
$arrayBBCode = array(
    
'quote'=>    array('type'=>BBCODE_TYPE_ARG,
                       
'open_tag'=>'<quote><h4>Origen: {PARAM}</h4>'
                       
'close_tag'=>'</quote>',
                       
'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY|BBCODE_FLAGS_ARG_PARSING),
    
'b'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<b>''close_tag'=>'</b>'
                       
'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
    
'u'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<u>''close_tag'=>'</u>'
                       
'flags'=>BBCODE_FLAGS_SMILEYS_OFF BBCODE_FLAGS_REMOVE_IF_EMPTY BBCODE_FLAGS_SMILEYS_OFF),
    
'i'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<i>''close_tag'=>'</i>'
                       
'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
);
/*
 * Set de reglas bbcode para el analizador de argumentos
 */
$arrayBBCode_arg = array(
    
'b'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<b class="sub">''close_tag'=>'</b>'
                       
'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
    
'u'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<u>''close_tag'=>'</u>',
                       
'flags'=>BBCODE_FLAGS_SMILEYS_OFF BBCODE_FLAGS_REMOVE_IF_EMPTY BBCODE_FLAGS_SMILEYS_OFF),
    
'i'=>        array('type'=>BBCODE_TYPE_NOARG
                       
'open_tag'=>'<i>''close_tag'=>'</i>'
                       
'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
);
/*
 * Texto que vamos a analizar
 */
$text = <<<EOF
[quote="[b]Test[/b]"]
Foo :)
[/quote]
[b]Ejemplo :)[/b] :)
EOF;
/*
 * Inicializamos ambos analizadores
 */
$BBHandler bbcode_create($arrayBBCode);
$BBArgHandler bbcode_create($arrayBBCode_arg);
/*
 * Establecemos flags a los analizadores
 */
bbcode_set_flags($BBHandler,
                 
BBCODE_CORRECT_REOPEN_TAGS|BBCODE_DEFAULT_SMILEYS_ON|BBCODE_ARG_DOUBLE_QUOTE|
                 
BBCODE_ARG_SINGLE_QUOTE|BBCODE_ARG_HTML_QUOTE,BBCODE_SET_FLAGS_SET);
bbcode_set_flags($BBArgHandler,
                 
BBCODE_CORRECT_REOPEN_TAGS|BBCODE_DEFAULT_SMILEYS_ON|BBCODE_ARG_DOUBLE_QUOTE|
                 
BBCODE_ARG_SINGLE_QUOTE|BBCODE_ARG_HTML_QUOTE,BBCODE_SET_FLAGS_SET);
/*
 * Establecemos $BBArgHandler como el analizador de argumentos de BBHandler
 */
bbcode_set_arg_parser($BBHandler,$BBArgHandler);
/*
 * Añadimos reglas para los smileys en el analizador principal
 */
bbcode_add_smiley($BBHandler":)""<img src=\"smiley.gif\" alt=\":)\" />");
/*
 * Usamos el analizador principal para analizar el texto
 */
echo bbcode_parse($BBHandler,$text);
?>

El resultado del ejemplo sería:

<quote><h4>Origen: <b class="sub">Test</b></h4>
Foo <img src="smiley.gif" alt=":)" />
</quote>
<b>Ejemplo :)</b> <img src="smiley.gif" alt=":)" />