(PECL bbcode >= 0.10.2)
bbcode_set_arg_parser — Añade otro analizador para usar otro set de reglas para analizar argumentos
$bbcode_container
, resource $bbcode_arg_parser
)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.
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.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
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=":)" />