Download the PHP package off-by-n/shortcode-templates without Composer
On this page you can find all versions of the php package off-by-n/shortcode-templates. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download off-by-n/shortcode-templates
More information about off-by-n/shortcode-templates
Files in off-by-n/shortcode-templates
Package shortcode-templates
Short Description A simple and fast parser for text with BBCode-style shortcodes
License MIT
Informations about the package shortcode-templates
Shortcode Templates
This library offers a simple parser for text containing "shortcodes", the underlying format of BBCode.
The scope of this project is to turn plain text containing generic shortcodes into a corresponding data structure. This should be as fast and efficient as possible, even for large amounts of text and deeply nested structures. It is not within the scope of this project to support any processing beyond that. For a more flexible solution that is optimized for smaller amounts of text, see Shortcode.
Installation
Usage
Example input string:
This would produce the equivalent of the following data structure. As you can see, both closed and unclosed shortcodes are allowed. The plain text inbetween shortcodes is part of the output:
You can then roll your own logic to proceed. Basic example:
Properties
The anatomy of a shortcode is assumed to be:
[<name>=<value> <attributeName1>=<attributeValue1> <attributeNameN>=<attributeValueN>]<children>[/<name>]
All parts but the opening name and brackets are optional. The following methods are available for each shortcode:
getName()
- retrieves the shortcode's namegetValue()
- retrieves the shortcode's value, ornull
if none providedgetAttributes()
- retrieves all attributes as an associative arraygetAttribute($name)
- retrieves a single attribute, by name, ornull
if not definedgetChildren()
- retrieves an array of all child chunks, ornull
for unclosed shortcodesgetInnerSource()
- retrieves the unparsed source text between the shortcode's opening and closing tag ornull
for unclosed shortcodesgetOuterSource()
- retrieves the unparsed source text of the shortcode, including opening and closing tag
All chunks, including text chunks, have a method isShortcode()
to differentiate between types of chunk: shortcode
or text
.
Why RegEx
By default, this library uses PHP's own RegEx extension to search the source text for control structures. The reasons for that are performance and easy setup: The Shortcodes format is made up of large amounts of literal text containing few relatively short control structures of a known format. The RegEx extension is optimized to find exactly that. Since it is a native implementation, it will usually have a better performance than any solution built in PHP code. Because the extension is already present in most installations, no additional extensions are required to install this parser. If another implementation is needed, it should be relatively easy to add.