Подключает другой парсер для применения иного набора правил в качестве параметров разбора


(PECL bbcode >= 0.10.2)

bbcode_set_arg_parserПодключает другой парсер для применения иного набора правил в качестве параметров разбора

Описание

bool bbcode_set_arg_parser ( resource $bbcode_container , resource $bbcode_arg_parser )

Подключает другой парсер для bbcode_container. Этот парсер используется только для получения параметров разбора. Если эта функция не используется, парсер использует параметры по умолчанию для исходного парсера.

Список параметров

bbcode_container

BBCode_Container resource, возвращаемый функцией bbcode_create().

bbcode_arg_parser

Значение BBCode_Container типа resource, возвращаемое функцией bbcode_create(). Используется только для получения параметров парсера

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования bbcode_set_arg_parser()

<?php
/*
 * Создание набора правил bbcode для основного парсера 
 */
$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),
);
/*
 * Создание набора правил bbcode для параметров парсера
 */
$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=<<<EOF
[quote="[b]Test[/b]"]
Foo :)
[/quote]
[b]Bar example :)[/b] :)
EOF;
/*
 * Инициализация двух парсеров
 */
$BBHandler=bbcode_create($arrayBBCode);
$BBArgHandler=bbcode_create($arrayBBCode_arg);
/*
 * Установка флагов для парсеров
 */
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);
/*
 * Подключение $BBArgHandler как параметров парсера BBHandler
 */
bbcode_set_arg_parser($BBHandler,$BBArgHandler);
/*
 * Добавление правил для обработки смайлов в основной парсер
 */
bbcode_add_smiley($BBHandler":)""<img src="/content/manuals/php/smiley.gif\" alt=\":)\" />");
/*
 * Используем основной парсер для разбора текста
 */
echo bbcode_parse($BBHandler,$text);
?>

Результат выполнения данного примера:

 <quote><h4>Source: <b class="sub">Test</b></h4> Foo <img src="/content/manuals/php/smiley.gif" alt=":)" /> </quote> <b>Bar example :)</b> <img src="smiley.gif" alt=":)" />