An extensible BBCode parser utility.
This is a parser for the BBCode markup language, supporting arbitrary rendering plugins for every tag., (*1)
Add the library to your composer dependencies as follows:, (*2)
composer require ermarian/xbbcode
, (*3)
The parser can be invoked as follows:, (*4)
new TemplateTagProcessor('{content}'), 'url' => new CallbackTagProcessor(function(TagElementInterface $tag) { $url = htmlspecialchars($tag->getOption()); return '<strong>Hello <a href="http://example.com">world</a>!</strong>
More powerful processor plugins can simply extend TagProcessorBase
and
implement doProcess
to perform their own rendering., (*5)
The syntax of BBCode used here is as follows:, (*6)
text = { VCHAR / LWSP / element1 /.../ elementN }
Where every elementN
takes the following form (for a specific value of
$name
that contains only lowercase alphanumeric characters and underscores), (*7)
elementN = "[$name" argument "]" text "[/$name]" argument = option / { WSP attribute } option = "=" option-value attribute = name "=" attribute-value name = { ALPHA | DIGIT | "_" }
The option-value
and attribute-value
strings must be quoted or escape
terminating delimiters (spaces and ]
) with backslashes., (*8)
Tags must be correctly nested, and are otherwise skipped. For example, in
the input [b][i][/b][/i]
, only the [b]
tag will be parsed., (*9)