Wallogit.com
2017 © Pedro Peláez
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)