mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
Compare commits
43 Commits
1.8.0-beta
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6598f3860c | ||
![]() |
1e5080190c | ||
![]() |
1610e4747c | ||
![]() |
3159a9d3cd | ||
![]() |
dbee8ab4f2 | ||
![]() |
dba4125b59 | ||
![]() |
bfaa76d370 | ||
![]() |
3825db53a2 | ||
![]() |
bce642f2d7 | ||
![]() |
21c8c792de | ||
![]() |
6ca29539e1 | ||
![]() |
a503c1a69b | ||
![]() |
819c68899d | ||
![]() |
4c2d79fc6a | ||
![]() |
48a2fb26fe | ||
![]() |
33b79d2446 | ||
![]() |
d6d2d96459 | ||
![]() |
d5b6ab5198 | ||
![]() |
15e8439c7f | ||
![]() |
ff6148f9b9 | ||
![]() |
dfd8657bc5 | ||
![]() |
ee64646765 | ||
![]() |
c956090b55 | ||
![]() |
0be26550f3 | ||
![]() |
8e26a65a6f | ||
![]() |
2a24a8583b | ||
![]() |
1d55344e92 | ||
![]() |
5dc8d1cc39 | ||
![]() |
33cf0f0b99 | ||
![]() |
dc1ff7d6c2 | ||
![]() |
0f0987571d | ||
![]() |
18eaa649b5 | ||
![]() |
e124572b60 | ||
![]() |
1686a34469 | ||
![]() |
2bd7113c55 | ||
![]() |
29fce0ec37 | ||
![]() |
b0bbc275d4 | ||
![]() |
72f9ca92ae | ||
![]() |
89c3fa05d9 | ||
![]() |
69163d6e88 | ||
![]() |
3a0c964291 | ||
![]() |
1829106e60 | ||
![]() |
464f5f9329 |
16
.travis.yml
16
.travis.yml
@ -1,23 +1,25 @@
|
||||
language: php
|
||||
|
||||
dist: trusty
|
||||
sudo: false
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.3
|
||||
dist: precise
|
||||
- php: 5.4
|
||||
dist: trusty
|
||||
- php: 5.5
|
||||
dist: trusty
|
||||
- php: 5.6
|
||||
dist: xenial
|
||||
- php: 7.0
|
||||
dist: xenial
|
||||
- php: 7.1
|
||||
dist: bionic
|
||||
- php: 7.2
|
||||
dist: bionic
|
||||
- php: 7.3
|
||||
- php: nightly
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- php: nightly
|
||||
dist: bionic
|
||||
- php: 7.4
|
||||
dist: bionic
|
||||
|
||||
install:
|
||||
- composer install --prefer-dist --no-interaction --no-progress
|
||||
|
@ -107,6 +107,7 @@ class Parsedown
|
||||
'ftp://',
|
||||
'ftps://',
|
||||
'mailto:',
|
||||
'tel:',
|
||||
'data:image/png;base64,',
|
||||
'data:image/gif;base64,',
|
||||
'data:image/jpeg;base64,',
|
||||
@ -555,7 +556,7 @@ class Parsedown
|
||||
|
||||
$Block = array(
|
||||
'element' => array(
|
||||
'name' => 'h' . min(6, $level),
|
||||
'name' => 'h' . $level,
|
||||
'handler' => array(
|
||||
'function' => 'lineElements',
|
||||
'argument' => $text,
|
||||
@ -1133,6 +1134,9 @@ class Parsedown
|
||||
|
||||
protected function lineElements($text, $nonNestables = array())
|
||||
{
|
||||
# standardize line breaks
|
||||
$text = str_replace(array("\r\n", "\r"), "\n", $text);
|
||||
|
||||
$Elements = array();
|
||||
|
||||
$nonNestables = (empty($nonNestables)
|
||||
@ -1490,7 +1494,7 @@ class Parsedown
|
||||
|
||||
protected function inlineSpecialCharacter($Excerpt)
|
||||
{
|
||||
if ($Excerpt['text'][1] !== ' ' and strpos($Excerpt['text'], ';') !== false
|
||||
if (substr($Excerpt['text'], 1, 1) !== ' ' and strpos($Excerpt['text'], ';') !== false
|
||||
and preg_match('/^&(#?+[0-9a-zA-Z]++);/', $Excerpt['text'], $matches)
|
||||
) {
|
||||
return array(
|
||||
|
68
README.md
68
README.md
@ -1,60 +1,61 @@
|
||||
> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC.
|
||||
<!--  -->
|
||||
|
||||
## Parsedown
|
||||
<p align="center"><img alt="Parsedown" src="https://i.imgur.com/fKVY6Kz.png" width="240" /></p>
|
||||
|
||||
[](https://travis-ci.org/erusev/parsedown)
|
||||
<!--[](https://packagist.org/packages/erusev/parsedown)-->
|
||||
<h1>Parsedown</h1>
|
||||
|
||||
Better Markdown Parser in PHP
|
||||
[](https://travis-ci.org/erusev/parsedown)
|
||||
[](https://packagist.org/packages/erusev/parsedown)
|
||||
[](https://packagist.org/packages/erusev/parsedown)
|
||||
[](https://packagist.org/packages/erusev/parsedown)
|
||||
|
||||
[Demo](http://parsedown.org/demo) |
|
||||
[Benchmarks](http://parsedown.org/speed) |
|
||||
[Tests](http://parsedown.org/tests/) |
|
||||
[Documentation](https://github.com/erusev/parsedown/wiki/)
|
||||
Better Markdown Parser in PHP - <a href="http://parsedown.org/demo">Demo</a>.
|
||||
|
||||
### Features
|
||||
## Features
|
||||
|
||||
* One File
|
||||
* No Dependencies
|
||||
* Super Fast
|
||||
* [Super Fast](http://parsedown.org/speed)
|
||||
* Extensible
|
||||
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
|
||||
* Tested in 5.3 to 7.2 and in HHVM
|
||||
* [GitHub flavored](https://github.github.com/gfm)
|
||||
* [Tested](http://parsedown.org/tests/) in 5.3 to 7.3
|
||||
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
|
||||
|
||||
### Installation
|
||||
#### Composer
|
||||
Install the [composer package] by running the following command:
|
||||
## Installation
|
||||
|
||||
Install the [composer package]:
|
||||
|
||||
composer require erusev/parsedown
|
||||
|
||||
#### Manual
|
||||
1. Download the "Source code" from the [latest release]
|
||||
2. Include `Parsedown.php`
|
||||
Or download the [latest release] and 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
|
||||
```
|
||||
|
||||
You can also parse inline markdown only:
|
||||
|
||||
```php
|
||||
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 = new Parsedown;
|
||||
$parsedown->setSafeMode(true);
|
||||
$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/).
|
||||
@ -65,18 +66,19 @@ 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 = new Parsedown;
|
||||
$parsedown->setMarkupEscaped(true);
|
||||
$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?**
|
||||
|
||||
@ -90,8 +92,12 @@ 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/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/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 :)
|
||||
|
Loading…
Reference in New Issue
Block a user