<?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.2 $ --> <refentry xml:id="function.bbcode-set-arg-parser" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>bbcode_set_arg_parser</refname> <refpurpose>Attach another parser in order to use another rule set for argument parsing</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>bbcode_set_arg_parser</methodname> <methodparam><type>resource</type><parameter>bbcode_container</parameter></methodparam> <methodparam><type>resource</type><parameter>bbcode_arg_parser</parameter></methodparam> </methodsynopsis> <para> Attaches another parser to the bbcode_container. This parser is used only when arguments must be parsed. If this function is not used, the default argument parser is the parser itself. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>bbcode_container</parameter></term> <listitem> <para> BBCode_Container resource, returned by <function>bbcode_create</function>. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>bbcode_arg_parser</parameter></term> <listitem> <para> BBCode_Container resource, returned by <function>bbcode_create</function>. It will be used only for parsed arguments </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> &return.success; </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>bbcode_set_arg_parser</function> usage example</title> <programlisting role="php"> <![CDATA[ <?php /* * Generating bbcode ruleset for main parser */ $arrayBBCode=array( 'quote'=> array('type'=>BBCODE_TYPE_ARG, 'open_tag'=>'<quote><h4>Source: {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), ); /* * Generating bbcode ruleset for argument parser */ $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), ); /* * Text we are going to parse */ $text=<<<EOF [quote="[b]Test[/b]"] Foo :) [/quote] [b]Bar example :)[/b] :) EOF; /* * Init the two parsers */ $BBHandler=bbcode_create($arrayBBCode); $BBArgHandler=bbcode_create($arrayBBCode_arg); /* * Setting Flags on the parsers */ 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); /* * Setting $BBArgHandler as the BBHandler argument parser */ bbcode_set_arg_parser($BBHandler,$BBArgHandler); /* * Adding Smileys handling rules to Main parser */ bbcode_add_smiley($BBHandler, ":)", "<img src=\"smiley.gif\" alt=\":)\" />"); /* * Use the main parser to parse text */ echo bbcode_parse($BBHandler,$text); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ <quote><h4>Source: <b class="sub">Test</b></h4> Foo <img src="smiley.gif" alt=":)" /> </quote> <b>Bar example :)</b> <img src="smiley.gif" alt=":)" /> ]]> </screen> </example> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->