Markdown Parser in KPHP
KParsedown is a fork from Parsedown
- One File
- No Dependencies
- Cross-language support: works for both PHP and KPHP
KParsedown provide two methods:
# parse file
$text = file_get_contents('README.md');
var_dump($parse->text($text));
# parse string
var_dump($parse->text('# Hello'));Both methods return HTML string(s). See Quick Start.
Create vendor/autoload.php with composer
composer dump-autoloadCreate index.php and write here:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Markdown\kparser\parsedown;
$parse = new parsedown();
var_dump($parse->text('Hello _Parsedown_!')); Run with PHP
php -f index.php
string(14) "<h1>Hello</h1>"Run with KPHP
# Execute result in Terminal
./kphp2cpp --composer-root $(pwd) --mode cli index.php
./kphp_out/cli
string(14) "<h1>Hello</h1>"or
# Execute result in localhost
./kphp2cpp --composer-root $(pwd) index.php
./kphp_out/server -H 8080 -f 1To begin with, require KTemplate
composer require quasilyte/ktemplateNext, you can find examples of usage in the directory 'ktemplate_usage'
Run with PHP:
php -f ktemplate_usage/example.phpor
Run with KPHP:
kphp --composer-root $(pwd) --mode cli ktemplate_usage/example.php
./kphp_out/cliAnd open ktemplate_usage/example.html in your browser ))
Parsedown features were implemented in KParsedown =^_^=
By default, KParsedown tries to parse any string
StrictMode - enabled
####Level 1
$Parsedown->setStrictMode(false);
StrictMode - disabled
####Level 1
<p>####Level 1<\p>
By default, when reading a new line in a file, a newline is automatically set to markdown
If you need to disable it, use:
$Parsedown->setBreaksEnabled(false);
KParsedown is capable of escaping user-input within the HTML that it generates. Additionally KParsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself.
To tell KParsedown that it is processing untrusted user-input, use the following:
$Parsedown->setSafeMode(true);
If you wish to escape HTML in trusted input, you can use the following:
$Parsedown->setMarkupEscaped(true);
Beware that this still allows users to insert unsafe scripting vectors, such as links like xss.
How does Parsedown work?
It tries to read Markdown like a human. First, it looks at the lines. It’s interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line starts with a - then perhaps it belongs to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines).
Is it compliant with CommonMark?
It passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve.
