Stars: 210
Forks: 48
Pull Requests: 37
Issues: 185
Watchers: 27
Last Updated: 2022-12-09 20:45:37
Textile markup language parser for PHP
License: Other
Languages: PHP, Makefile, Dockerfile
Textile reference | Live editor
PHP-Textile is a modern Textile markup language parser for PHP. Textile is a humane web text generator that takes lightweight, readable, plaintext-like markup language and converts it into well formed HTML.
Using Composer:
$ composer require netcarver/textile
The Textile parser can be accessed through the Netcarver\Textile\Parser
class. The class is highly configurable, and actual parsing happens with the parse
method:
require './vendor/autoload.php';
$parser = new \Netcarver\Textile\Parser();
echo $parser->parse('h1. Hello World!');
If you are using PHP-Textile to format user-supplied input, blog comments for instance, remember to enable restricted parser mode:
$parser = new \Netcarver\Textile\Parser();
echo $parser
->setRestricted(true)
->parse('!bad/image/not/allowed.svg!');
In restricted mode PHP-Textile doesn’t allow more powerful formatting options such as inline styles, and removes any raw HTML.
If you are using PHP-Textile as a field-level formatter to parse just inline spans and glyphs, use the setBlockTags
method to disable block tags:
$parser = new \Netcarver\Textile\Parser();
echo $parser
->setBlockTags(false)
->parse('Hello *strong* world!');
The above outputs:
Hello <strong>strong</strong> world!
Currently, PHP-Textile can target either XHTML or HTML5 output with XHTML being the default for backward compatibility. The targeted doctype can be changed via the setDocumentType
method:
$parser = new \Netcarver\Textile\Parser();
echo $parser
->setDocumentType('html5')
->parse('HTML(HyperText Markup Language)');
Textile’s typographic substitutions can be overridden with the setSymbol
method. If you need to setup Textile to do non-standard substitutions, call setSymbol
before you parse the input with parse
.
$parser = new \Netcarver\Textile\Parser();
$parser
->setSymbol('half', '1⁄2')
->parse('Hello [1/2] World!');
The symbol names you can pass to setSymbol
can be found here.
Setting prefix might be useful if you want to point relative paths to certain consistent location:
$parser = new \Netcarver\Textile\Parser();
$parser
->setImagePrefix('/user/uploads')
->setLinkPrefix('/')
->parse('!image.jpg! "link":page');
The PHP-Textile project welcomes constructive input and bug reports from users. Please open an issue on the repository for a comment, feature request or bug.
See CONTRIBUTING.textile.