Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Text Formatter Laravel Package

s9e/text-formatter

PHP text formatting library with plugin support for BBCode, Markdown, HTML, and more. Includes predefined bundles, extensive documentation, and a JavaScript port for client-side preview and demos. Install via Composer and integrate customizable parsing/rendering.

View on GitHub
Deep Wiki
Context7

While most of the configuration happens before the parser and renderer are generated, a few settings can be configured at parsing time and rendering time.

Parser

Limit the number/nesting of tags

A tag's nestingLimit or tagLimit can be set during configuration or before parsing.

$configurator = new s9e\TextFormatter\Configurator;
$configurator->tags->add('X');

// Set the default limits
$configurator->tags['X']->nestingLimit = 1;
$configurator->tags['X']->tagLimit     = 10;

// Get an instance of the parser/renderer
extract($configurator->finalize());

// Change the limits at runtime
$parser->setNestingLimit('X', 10);
$parser->setTagLimit('X', 100);

Toggle a plugin

Plugins can be toggled before parsing.

$parser   = s9e\TextFormatter\Bundles\Forum::getParser();
$renderer = s9e\TextFormatter\Bundles\Forum::getRenderer();

// Disable BBCodes before parsing
$parser->disablePlugin('BBCodes');
$text = '[b]BBCodes disabled[/b]';
$xml  = $parser->parse($text);
$html = $renderer->render($xml);
echo $html, "\n";

// Re-enable BBCodes before parsing
$parser->enablePlugin('BBCodes');
$text = '[b]BBCodes enabled[/b]';
$xml  = $parser->parse($text);
$html = $renderer->render($xml);
echo $html;
[b]BBCodes disabled[/b]
<b>BBCodes enabled</b>

Toggle a tag

Individual tags can be toggled before parsing.

$parser   = s9e\TextFormatter\Bundles\Forum::getParser();
$renderer = s9e\TextFormatter\Bundles\Forum::getRenderer();

// Disable B before parsing
$parser->disableTag('B');
$text = '[b]Bold disabled[/b]';
$xml  = $parser->parse($text);
$html = $renderer->render($xml);
echo $html, "\n";

// Re-enable B before parsing
$parser->enableTag('B');
$text = '[b]Bold enabled[/b]';
$xml  = $parser->parse($text);
$html = $renderer->render($xml);
echo $html;
[b]Bold disabled[/b]
<b>Bold enabled</b>

Plug your own parser

You can register your own parser to be executed at runtime.

Renderer

Change a template parameter

$configurator = new s9e\TextFormatter\Configurator;
$configurator->BBCodes->addCustom('[hello]', 'Hello <xsl:value-of select="$USER"/>');
$configurator->rendering->parameters['USER'] = 'you';
extract($configurator->finalize());

$text = '[hello]';
$xml  = $parser->parse($text);
$html = $renderer->render($xml);
echo $html, "\n";

// Change the USER parameter
$renderer->setParameter('USER', 'Joe');
$html = $renderer->render($xml);
echo $html;
Hello you
Hello Joe
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours