MarkdownHelper::toHTML()
\nn\t3::MarkdownHelper()->toHTML($str = '');
Convert a text containing markdown to HTML.
\Nng\Nnhelpers\Helpers\MarkdownHelper::toHTML( '...' );
Copied!
| @return string
Source Code
public static function toHTML( $str = '' ) {
if (!class_exists(\Parsedown::class)) {
\nn\t3::autoload();
}
$parsedown = new \Parsedown();
$result = $parsedown->text( $str );
$result = str_replace(['&amp;', '&gt;', '&#039;', '&quot;', '&apos;', '&lt;'], ['&', '>', ''', '"', "'", '<'], $result);
$result = trim($result);
if (!$result) return '';
$dom = new \DOMDocument();
$dom->loadXML( '<t>' . $result . '</t>', LIBXML_NOENT | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING );
if (!$dom) return $result;
if ($pre = $dom->getElementsByTagName('pre'));
if (!$pre) return $result;
foreach ($pre as $el) {
if ($code = $el->getElementsByTagName('code')) {
foreach ($code as $codeEl) {
$codeEl->setAttribute('class', 'language-php');
}
}
}
$html = $dom->saveHTML( $dom->getElementsByTagName('t')->nodeValue ?? null );
return trim(str_replace(['<t>', '</t>'], '', $html));
}
Copied!