|
|
|
@ -1,61 +1,60 @@
|
|
|
|
|
<!--  -->
|
|
|
|
|
> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC.
|
|
|
|
|
|
|
|
|
|
<p align="center"><img alt="Parsedown" src="https://i.imgur.com/fKVY6Kz.png" width="240" /></p>
|
|
|
|
|
## Parsedown
|
|
|
|
|
|
|
|
|
|
<h1>Parsedown</h1>
|
|
|
|
|
[](https://travis-ci.org/erusev/parsedown)
|
|
|
|
|
<!--[](https://packagist.org/packages/erusev/parsedown)-->
|
|
|
|
|
|
|
|
|
|
[](https://travis-ci.org/erusev/parsedown)
|
|
|
|
|
[](https://packagist.org/packages/erusev/parsedown)
|
|
|
|
|
[](https://packagist.org/packages/erusev/parsedown)
|
|
|
|
|
[](https://packagist.org/packages/erusev/parsedown)
|
|
|
|
|
Better Markdown Parser in PHP
|
|
|
|
|
|
|
|
|
|
Better Markdown Parser in PHP - <a href="http://parsedown.org/demo">Demo</a>.
|
|
|
|
|
[Demo](http://parsedown.org/demo) |
|
|
|
|
|
[Benchmarks](http://parsedown.org/speed) |
|
|
|
|
|
[Tests](http://parsedown.org/tests/) |
|
|
|
|
|
[Documentation](https://github.com/erusev/parsedown/wiki/)
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
### Features
|
|
|
|
|
|
|
|
|
|
* One File
|
|
|
|
|
* No Dependencies
|
|
|
|
|
* [Super Fast](http://parsedown.org/speed)
|
|
|
|
|
* Super Fast
|
|
|
|
|
* Extensible
|
|
|
|
|
* [GitHub flavored](https://github.github.com/gfm)
|
|
|
|
|
* [Tested](http://parsedown.org/tests/) in 5.3 to 7.3
|
|
|
|
|
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
|
|
|
|
|
* Tested in 5.3 to 7.2 and in HHVM
|
|
|
|
|
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
Install the [composer package]:
|
|
|
|
|
### Installation
|
|
|
|
|
#### Composer
|
|
|
|
|
Install the [composer package] by running the following command:
|
|
|
|
|
|
|
|
|
|
composer require erusev/parsedown
|
|
|
|
|
|
|
|
|
|
Or download the [latest release] and include `Parsedown.php`
|
|
|
|
|
#### Manual
|
|
|
|
|
1. Download the "Source code" from the [latest release]
|
|
|
|
|
2. Include `Parsedown.php`
|
|
|
|
|
|
|
|
|
|
[composer package]: https://packagist.org/packages/erusev/parsedown "The Parsedown package on packagist.org"
|
|
|
|
|
[latest release]: https://github.com/erusev/parsedown/releases/latest "The latest release of Parsedown"
|
|
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
### Example
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
``` php
|
|
|
|
|
$Parsedown = new Parsedown();
|
|
|
|
|
|
|
|
|
|
echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
You can also parse inline markdown only:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
// you can also parse inline markdown only
|
|
|
|
|
echo $Parsedown->line('Hello _Parsedown_!'); # prints: Hello <em>Parsedown</em>!
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
|
|
|
|
|
|
|
|
|
|
## Security
|
|
|
|
|
### Security
|
|
|
|
|
|
|
|
|
|
Parsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself.
|
|
|
|
|
|
|
|
|
|
To tell Parsedown that it is processing untrusted user-input, use the following:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
$Parsedown->setSafeMode(true);
|
|
|
|
|
$parsedown = new Parsedown;
|
|
|
|
|
$parsedown->setSafeMode(true);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/).
|
|
|
|
@ -66,19 +65,18 @@ In both cases you should strongly consider employing defence-in-depth measures,
|
|
|
|
|
|
|
|
|
|
Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS.
|
|
|
|
|
|
|
|
|
|
## Escaping HTML
|
|
|
|
|
|
|
|
|
|
> **WARNING:** This method isn't safe from XSS!
|
|
|
|
|
### Escaping HTML
|
|
|
|
|
> ⚠️ **WARNING:** This method isn't safe from XSS!
|
|
|
|
|
|
|
|
|
|
If you wish to escape HTML **in trusted input**, you can use the following:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
$Parsedown->setMarkupEscaped(true);
|
|
|
|
|
$parsedown = new Parsedown;
|
|
|
|
|
$parsedown->setMarkupEscaped(true);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`.
|
|
|
|
|
|
|
|
|
|
## Questions
|
|
|
|
|
### Questions
|
|
|
|
|
|
|
|
|
|
**How does Parsedown work?**
|
|
|
|
|
|
|
|
|
@ -92,12 +90,8 @@ It passes most of the CommonMark tests. Most of the tests that don't pass deal w
|
|
|
|
|
|
|
|
|
|
**Who uses it?**
|
|
|
|
|
|
|
|
|
|
[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony Demo](https://github.com/symfony/demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents).
|
|
|
|
|
[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony demo](https://github.com/symfony/symfony-demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents).
|
|
|
|
|
|
|
|
|
|
**How can I help?**
|
|
|
|
|
|
|
|
|
|
Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
|
|
|
|
|
|
|
|
|
|
**What else should I know?**
|
|
|
|
|
|
|
|
|
|
I also make [Nota](https://nota.md/) — a writing app designed for Markdown files :)
|
|
|
|
|